如何在两个npm命令中定义变量?

时间:2016-11-16 04:47:42

标签: npm webpack

因为我有不同的渠道在npm命令中运行我的代码。

在npm脚本中,我会写

"scripts": {
  "start": "webpack-dev-server",
  "start:channle_1": "CHANNEL=channe_1 webpack-dev-server",
  "start:channle_2": "CHANNEL=channe_2 webpack-dev-server"
}

webpack.config.js中,我可以定义变量来判断我在哪个频道。

  const CHANNEL = process.env.CHANNEL || 'channe_1';

  console.log('===', process.env.CHANNEL);

  webpackConfig.plugins.push(
    new webpack.DefinePlugin({
      CHANNEL: JSON.stringify(CHANNEL),
    })
  );

因此,在我的代码中,我可以使用gla CHANNEL

但是,我的npm脚本存在问题。我想要单独的服务器和频道。我希望它可以像这样

"scripts": {
  "start": "webpack-dev-server",
  "start:channle_1": "CHANNEL=channe_1 & npm run start",
  "start:channle_2": "CHANNEL=channe_2 & npm run start"
}

据我所知,&可以让npm命令当前运行,但在我的情况下,变量CHANNEL无法传入process.env.CHANNEL

那么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

如果您取出app.post('/upload', multer.single('image'), function(req, res,next){ //Handle image content here. console.log(req.file); //to access file }); 它应该可以正常工作:

&

当你将"start:channle_1": "CHANNEL=channe_1 npm run start" 放在那里时,它会尝试在后台运行前面的(空)命令。您可以通过在命令前添加前缀来设置环境变量,用空格分隔。