gpt4 book ai didi

npm - 跨平台 NPM 启动脚本

转载 作者:行者123 更新时间:2023-12-04 07:20:03 28 4
gpt4 key购买 nike

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

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

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

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

最佳答案

环境变量是 Windows 中的一个问题。
正如 Domenic Denicola(npm 的主要贡献者之一)所述:

This is not npm's job. You can run custom Node scripts to set environment variables using process.env if you'd like, or use something that isn't environment variables (like JSON).

...

You can write custom scripts to work around connect's limitations, e.g. in your tests modify process.env.

(Reference : this issue)


因此,我们将通过 JS 脚本进行管理(解决方案灵感来自此 commit):
  • 创建一个 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);
    });
  • 更新您的 package.json :

  • "scripts": {
    "start": "node scripts/exec.js development",
    }
  • 运行 npm 脚本:npm run start

  • 编辑 05.04.2016
    有一个非常有用的 npm 包可以解决这个问题: cross-env .运行跨平台设置环境变量的命令

    关于npm - 跨平台 NPM 启动脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971416/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com