我正在构建一个将由Windows和OS X上的人员开发的Electron应用程序.我想创建一个跨平台的启动脚本.到目前为止,我已经完全没有运气了.我认为,问题是我需要设置NODE_ENV环境变量,语法略有不同.
我希望有一种方法我还没有找到.我当前的脚本部分如下:
"scripts": {
"start:osx": "NODE_ENV=development electron ./app/",
"start:win": "set NODE_ENV=development && electron ./app/"
}
Run Code Online (Sandbox Code Playgroud)
我真的想创建一个单独的"开始"脚本并消除特定于平台的变体.可能吗?
环境变量是Windows中的一个问题.
如Domenic Denicola(npm的主要贡献者之一)所述:
这不是npm的工作.如果您愿意,可以使用process.env运行自定义Node脚本来设置环境变量,或者使用非环境变量(如JSON).
...
您可以编写自定义脚本来解决连接的限制,例如在测试中修改process.env.
(参考:本期)
因此,我们将通过JS脚本进行管理(解决方案受此提交启发):
exec.js在scripts目录中创建文件
复制以下代码exec.js:
var exec = require('child_process').exec;
var command_line = 'electron ./app/';
var environ = (!process.argv[2].indexOf('development')) ? 'development' : 'production';
if(process.platform === 'win32') {
// tricks : https://github.com/remy/nodemon/issues/184#issuecomment-87378478 (Just don't add the space after the NODE_ENV variable, just straight to &&:)
command_line = 'set NODE_ENV=' + environ + '&& ' + command_line;
} else {
command_line = 'NODE_ENV=' + environ + ' ' + command_line;
}
var command = exec(command_line);
command.stdout.on('data', function(data) {
process.stdout.write(data);
});
command.stderr.on('data', function(data) {
process.stderr.write(data);
});
command.on('error', function(err) {
process.stderr.write(err);
});
Run Code Online (Sandbox Code Playgroud)
package.json:"scripts": {
"start": "node scripts/exec.js development",
}
Run Code Online (Sandbox Code Playgroud)
npm run start编辑05.04.2016
有一个非常有用的npm包允许管理这个问题:cross-env.运行跨平台设置环境变量的命令
| 归档时间: |
|
| 查看次数: |
2859 次 |
| 最近记录: |