@hunliji/cli-service v1.0.1
xi-cli-service
CLI 服务
概述
在一个 XI CLI 项目中,@xi/cli-service 安装了一个名为 xi-cli-service 的命令。你可以在 npm scripts 中以 xi-cli-service、或者从终端中以 ./node_modules/.bin/xi-cli-service 访问这个命令。
这是你使用默认项目的 package.json:
{
  "scripts": {
    "serve": "xi-cli-service serve",
    "build": "xi-cli-service build"
  }
}环境变量和模式
你可以替换你的项目根目录中的下列文件来指定环境变量:
模式 mode 可以指定为 production 或 development
.env                # 在所有的环境中被载入
.env.[mode]         # 只在指定的模式中被载入注意:环境变量的指定要以
XI_APP_开头才会被webpack.DefinePlugin静态嵌入到客户端侧的包中。
环境变量示例
假设我们有一个应用包含以下 .env 文件:
XI_APP_NAME = example你可以在应用的代码中这样访问它们:
console.log(process.env.XI_APP_NAME) // example注意:接口环境在应用中通过 process.env.XI_APP_ENV 来获取,process.env.XI_APP_ENV支持类型:
- dev 测试环境
 - pre 预发环境
 - prod 生产环境
 
打包环境配置
为了在 CI/CD(Jenkins)能直接执行 shell,可以通过如下配置接口环境和相关页面:
// web项目
xi-cli-service serve env=prod
// wap或site项目
xi-cli-service serve env=prod page=xxxx配置参考
xi.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @xi/cli-service 自动加载。
这个文件应该导出一个包含了选项的对象:
// xi.config.js
module.exports = {
  // 选项...
}type
- Type: 
web | wap | site 
项目模板类型。默认生成,不需要改动。
publicPath
- Type: 
string - Default: 
./ 
部署应用包时的基本 URL。用法和 webpack 本身的 output.publicPath 一致,但是 Vue CLI 在一些其他地方也需要用到这个值,所以请始终使用 publicPath 而不要直接修改 webpack 的 output.publicPath。
devServer
- Type: 
Object 
configureWebpack
- Type: 
Object 
webpack 额外配置,通过 webpack-merge 合并到最终的配置中
更多细节可查阅:webpack。
resolve.alias
这不是一个配置参数,脚手架没有单独的
alias配置参数,
脚手架默认读取 tsconfig.json 中的 compilerOptions.paths 字段将路径添加到 resolve.alias。如果不在 tsconfig.json 中配置,可以通过 configureWebpack 配置项配置。
babelPlugins
- Type: 
Array 
babel config 中的 plugins 配置。
更多细节可查阅:babel。
openBundleAnalyzer
- Type: 
boolean - Default: 
false 
打包完后自动打开 bundle 分析器
externals
- Type: 
Object - Example: 
{ react: { name: 'React', cdn: '//xxx.com/react.js' } } 
配置 webpack 配置中 externals
更多细节可查阅:externals。
mergeExternals
- Type: 
boolean - Default: 
true 
是否将传进来的 externals 和 默认的 externals 合并
默认 externals :
{
  react: {
    name: 'React',
    cdn: '//s.haicaoyun.com/react-16.13.1.production.min.js',
  },
  'react-dom': {
    name: 'ReactDOM',
    cdn: '//s.haicaoyun.com/react-dom-16.13.1.production.min.js?t=4rCjKf',
  },
  'react-router-dom': {
    name: 'ReactRouterDOM',
    cdn: '//s.haicaoyun.com/react-router-dom-5.2.0.min.js',
  },
  axios: {
    name: 'axios',
    cdn: '//s.haicaoyun.com/axios-0.19.2.min.js',
  },
}css.requireModuleExtension
- Type: 
boolean - Default: 
true 
默认情况下,只有 *.module.[ext] 结尾的文件才会被视作 CSS Modules 模块。设置为 false 后你就可以去掉文件名中的 .module 并将所有的 *.(css|less?) 文件视为 CSS Modules 模块。
更多细节可查阅:配合 CSS > CSS Modules(更多细节可查阅:配合 CSS > CSS Modules。)。
css.lessOptions
- Type: 
Object 
对 less-loader 的 options 属性中的 lessOptions 进行相应配置。
更多细节可查阅:less-loader。
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago