如何将命令行参数传递给 vue.config.js?

And*_*coy 5 webpack vue.js webpack-dev-server

我正在尝试配置一个 vue 项目,以便 webpack-dev-server 代理/data对两个主机之一的请求,具体取决于调用的 npm-run 命令:

npm run serve-foo
npm run serve-bar
Run Code Online (Sandbox Code Playgroud)

这是配置:

// 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',
}
Run Code Online (Sandbox Code Playgroud)

// 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]
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行 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
Run Code Online (Sandbox Code Playgroud)

thS*_*oft 6

您可以通过环境变量来实现这一点:

// 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',
}
Run Code Online (Sandbox Code Playgroud)

// vue.config.js    
module.exports = {
  devServer: {
    // ...
    proxy: {
      '/data': {
        target: process.env.BACKEND_URL
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)