【问题标题】:Passing variables from NPM Scripts to Webpack将变量从 NPM 脚本传递到 Webpack
【发布时间】:2017-04-06 10:30:54
【问题描述】:

我有一个带有 Webpack 的生产版本,它使用节点的 process.env 来设置环境变量:

webpack.prod.babel.js:

const DefinePlugin = new webpack.DefinePlugin({
  'process.env': {
    NODE_ENV: JSON.stringify('production'),
    API_URL: JSON.stringify('https://myprodurl.com'),
  },
});

packge.json:

"scripts: {
  "build:prod": "webpack"
}

它工作正常,但我需要一些不同的东西。

我需要在 NPM 脚本中将生产 url 设置为变量

所以,不要这样:

npm run build:prod

我需要这个:

npm run build:prod --URL https://myprodurl.com

【问题讨论】:

    标签: node.js npm webpack npm-scripts


    【解决方案1】:

    如何在命令行中定义你的环境变量,比如:

    URL=https://myprodurl.com npm run build:prod

    我用一个简单的脚本对此进行了测试,并能够打印出URL

    "scripts": {
      "test": "./myTest.js"
    },
    

    myTest.js:

    #!/usr/local/bin/node
    
    'use strict'
    
    console.log(process.env.URL);
    console.log('Done!');
    

    然后:

    $ URL=https://whatever.com npm run test
    
    > my-test@1.0.0 test /Test/my-test
    > ./myTest.js
    
    https://whatever.com
    Done!
    

    编辑:正如@RyanZim 所提到的,请参阅 Windows 的以下内容:https://github.com/kentcdodds/cross-env
    (免责声明:我不使用 Windows,也从未尝试过这个库)

    【讨论】:

    • 应该编辑提到如果你需要windows支持,你将不得不使用github.com/kentcdodds/cross-env
    • 您可以在npm run 命令之前添加环境变量,而不是创建一个全新的脚本文件:"build:prod": "NODE_ENV=production webpack"
    • 你已经接近了,但你的代码应该是 API_URL: JSON.stringify( process.env.URL ), 才能正确回答问题
    • @DanO 好点。您绝对可以将其放在 package.json 内的 scripts 条目的命令行中以简化它。
    • @AndyRay 抱歉,只是想给出一个简单的工作示例。
    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 2020-08-10
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多