vue.js - 如何将命令行参数传递给 vue.config.js?
问题描述
我正在尝试配置一个 vue 项目,以便 webpack-dev-server 代理/data
对两个主机之一的请求,具体取决于调用哪个 npm-run 命令:
npm run serve-foo
npm run serve-bar
这是配置:
// package.json
{
scripts: {
'serve-foo': 'vue-cli-service serve -- http://192.168.7.2',
'serve-bar': 'vue-cli-service serve -- http://192.168.7.3',
}
和
// vue.config.js
// prints "node.exe vue-cli-service.js serve -- http://192.168.7.2"
console.log(...process.argv);
module.exports = {
devServer: {
// ...
proxy: {
'/data': {
target: process.argv[4]
}
}
}
}
现在,当我运行 npm run serve-foo 时,会发生以下错误。我究竟做错了什么?不vue-cli-service
支持使用--
传递参数?
This dependency was not found:
C:\Project\http:\192.168.7.2 in multi (webpack)-dev-server/client?http://192.168.0.5:80/sockjs-node (webpack)/hot/dev-server.js ./http:/192.168.7.2, multi (webpack)-dev-server/client?http://localhost:80 (webpack)/hot/dev-server.js (webpack)-dev-server/client?http://192.168.0.5:80/sockjs-node ./http:/192.168.7.2
To install it, you can run: npm install --save C:\Project\http:\192.168.7.2
解决方案
您可以通过环境变量来实现这一点:
// package.json
{
scripts: {
'serve-foo': 'export BACKEND_URL=http://192.168.7.2 && vue-cli-service serve',
'serve-bar': 'export BACKEND_URL=http://192.168.7.3 && vue-cli-service serve',
}
和
// vue.config.js
module.exports = {
devServer: {
// ...
proxy: {
'/data': {
target: process.env.BACKEND_URL
}
}
}
}
推荐阅读
- neo4j - Neo4j:通过两种类型的节点传播标签
- node.js - 如何将数据从服务器代码呈现到 ejs 模板?
- java - 为什么我不能直接投射 super 调用的结果?
- python-3.x - 数据流作业不产生任何输出
- laravel - Laravel 刀片模板中的条件结构不起作用
- sql - 3张表一一匹配,得到最终列值
- python - NumPy 就地重塑数组
- flutter - 如何在flutter中从sqlite获取最后一个条目?
- laravel - 如何在 laravel 中的 DB select 和 DB raw 之后获取值
- android - 在 Repository 类中观察 Forever 是一个好习惯吗?db+network 分页列表