首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨平台NPM启动脚本

跨平台NPM启动脚本
EN

Stack Overflow用户
提问于 2015-10-06 13:35:23
回答 1查看 4.2K关注 0票数 8

我正在开发一个由Windows和OS用户开发的电子应用程序。我想创建一个跨平台的启动脚本。到目前为止,我完全没有运气得到一些有用的东西。我认为问题在于,我需要设置NODE_ENV环境变量,并且语法略有不同。

我希望有一种我还没找到的方法。我现在的脚本部分如下:

代码语言:javascript
复制
"scripts": {
    "start:osx": "NODE_ENV=development electron ./app/",
    "start:win": "set NODE_ENV=development && electron ./app/"
}

我真的很想创建一个单一的“开始”脚本,并消除特定于平台的变体。有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 13:14:42

环境变量是Windows中的一个问题。

如前所述,多梅尼卡·德尼科拉(国家预防机制的主要贡献者之一):

这不是国家预防机制的工作。如果愿意,可以运行自定义Node脚本来使用process.env设置环境变量,或者使用一些非环境变量(如JSON)。 ..。 您可以编写自定义脚本来解决connect的局限性,例如在测试中修改process.env。 (参考:本期)

因此,我们将通过一个JS脚本(基于这个提交的解决方案)进行管理:

  1. exec.js目录中创建scripts文件
  2. exec.js中复制以下代码:
代码语言:javascript
复制
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);
});
  1. 更新您的package.json
代码语言:javascript
复制
"scripts": {
    "start": "node scripts/exec.js development",
}
  1. 运行npm脚本:npm run start

编辑05.04.2016

有一个非常有用的npm包可以管理这个问题:交叉env。运行跨平台设置环境变量的命令。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32971416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档