2016-11-16 35 views
1

因为我有不同的渠道在npm命令中运行我的代码。如何在两个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), 
    }) 
); 

所以,在我的代码中,有一个可以使用的glable CHANNEL

但是,在我的npm脚本中有一个问题。我想单独的服务器版和channel.I希望它能够喜欢这个

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

据我所知,&可以让故宫命令运行当前,但是,在我的情况中,变量CHANNEL不能process.env.CHANNEL通过。

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

回答

2

如果取出&它应该很好地工作:

"start:channle_1": "CHANNEL=channe_1 npm run start" 

当你把&在那里,它会尝试在后台运行前面的(空的)命令。您可以通过在命令前加上环境变量来设置环境变量,并用空格分隔。

+1

还应该补充说,如果你想让脚本在windows上工作,你将不得不使用https://github.com/kentcdodds/cross-env。 – RyanZim

相关问题