跨平台NPM启动脚本

跨平台NPM启动脚本,npm,electron,Npm,Electron,我正在构建一个电子应用程序,它将由Windows和OS X上的人们开发。我想创建一个跨平台的开始脚本。到目前为止,我完全没有运气得到有效的东西。我认为问题在于,我需要设置NODE\u ENV环境变量,并且语法略有不同 我希望有一种我还没有找到的方法。我当前的脚本部分如下: "scripts": { "start:osx": "NODE_ENV=development electron ./app/", "start:win": "set NODE_ENV=development

我正在构建一个电子应用程序,它将由Windows和OS X上的人们开发。我想创建一个跨平台的开始脚本。到目前为止,我完全没有运气得到有效的东西。我认为问题在于,我需要设置
NODE\u ENV
环境变量,并且语法略有不同

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

"scripts": {
    "start:osx": "NODE_ENV=development electron ./app/",
    "start:win": "set NODE_ENV=development && electron ./app/"
}

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

环境变量在Windows中是个问题

正如Domenic Denicola(npm的主要贡献者之一)所述:

这不是npm的工作。如果愿意,可以使用process.env运行自定义节点脚本来设置环境变量,也可以使用非环境变量(如JSON)的内容

您可以编写自定义脚本来绕过connect的限制,例如在测试中修改process.env

(参考资料:)

因此,我们将通过一个JS脚本(受此启发的解决方案)进行管理:

  • scripts
    目录中创建
    exec.js
    文件

  • exec.js
    中复制以下代码:

  • var exec=require('child_process')。exec;
    var命令行='electron./app/';
    var environ=(!process.argv[2].indexOf('development'))?'发展:"生产",;
    如果(process.platform==='win32'){
    //诀窍:https://github.com/remy/nodemon/issues/184#issuecomment-87378478(只是不在NODE_ENV变量后面添加空格,直接添加到&&:)
    命令行='设置节点环境='+environ+'&&'+command行;
    }否则{
    命令行='节点环境='+环境+''+命令行;
    }
    var command=exec(命令行);
    command.stdout.on('data',函数(data){
    进程.标准输出.写入(数据);
    });
    命令.stderr.on('data',函数(data){
    进程.stderr.write(数据);
    });
    command.on('error',function(err){
    进程.stderr.write(err);
    });
    
  • 更新您的
    包.json
  • “脚本”:{
    “开始”:“节点脚本/exec.js开发”,
    }
    
  • 运行npm脚本:
    npm运行开始
  • 编辑2016年4月5日


    有一个非常有用的npm包,允许管理此问题:。运行跨平台设置环境变量的命令

    感谢您的全面回答。我大概一天左右都没有机会测试它,但在这段时间内,我会提高投票率,因为这看起来是解决问题的好办法。一旦我知道一切进展顺利,我会把它作为答案。再次感谢!