目的:我想实现一套代码,实现多个命令打包出不同的代码;
修改package.json
{ "name": "name", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "serve:cp": "vue-cli-service serve --mode dev2", "build": "vue-cli-service build", "build:cp": "vue-cli-service build --mode prod2" }, }
默认情况下,vue-cli项目有三个模式:development,test, production
development
模式用于vue-cli-service serve
test
模式用于vue-cli-service test:unit
production
模式用于vue-cli-service build
和vue-cli-service test:e2e
可以通过传递--mode选项参数为命令行覆写默认的模式。
vue-cli-service build --mode development
当运行 vue-cli-service
命令时,所有的环境变量都从对应的环境文件中载入。如果文件内部不包含 NODE_ENV
变量,它的值将取决于模式,例如,在 production
模式下被设置为 "production"
,在 test
模式下被设置为 "test"
,默认则是 "development"
。
NODE_ENV
将决定您的应用运行的模式,是开发,生产还是测试,因此也决定了创建哪种 webpack 配置。
环境变量
可以在项目根目录中放置以下文件来制定环境变量;
.env # 在所有的环境中被载入
.env.local # 在所有的环境中被载入,但会被 git 忽略
.env.[mode] # 只在指定的模式中被载入
.env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略
环境文件中只包含环境变量,其中 请注意,只有 NODE_ENV
,BASE_URL
和以 VUE_APP_
开头的变量可以拿到。
环境文件加载优先级
为一个特定模式准备的环境文件 (例如 .env.production
) 将会比一般的环境文件 (例如 .env
) 拥有更高的优先级。
只有以 VUE_APP_
开头的变量会被 webpack.DefinePlugin
静态嵌入到客户端侧的包中。你可以在应用的代码中这样访问它们:
console.log(process.env.VUE_APP_SECRET)
除了 VUE_APP_*
变量之外,在你的应用代码中始终可用的还有两个特殊的变量:
NODE_ENV
- 会是"development"
、"production"
或"test"
中的一个。具体的值取决于应用运行的模式。BASE_URL
- 会和vue.config.js
中的publicPath
选项相符,即你的应用会部署到的基础路径。
例如:
package.json为:
"serve:dev": vue-cli-service serve --mode dev
"build:cp": vue-cli-service build --mode prod
对应的文件:
env.dev
env.prod
就可以使用命令:
npm run serve:dev 启动项目;
npm run build:cp 构建项目;