node.js - 如何设置在 "npm install"期间使用的环境变量?

标签 node.js npm environment-variables npm-install cypress

我们的公司网络非常封闭,所以正常的方法是:

npm install cypress@3.4.1

由于被代理阻止而不起作用,我们需要在跨环境的帮助下通过以下方式提供参数CYPRESS_INSTALL_BINARY(因为我们这里主要有微软环境)。

cross-env CYPRESS_INSTALL_BINARY='\\localserver\cypress\3.4.1\cypress.zip' npm install cypress@3.4.1

这在第一次安装时很容易做到,但问题是团队中的每个人都需要运行此命令。我希望只需输入 npm install 即可自动获取所有要求。当我们想要更新 cypress 包时,这一点尤为明显,因为每次都需要更改二进制 url。

我尝试将 preinstall 脚本添加到我的 package.json 中,如下所示:

 "scripts": {
    ...
    "preinstall": "cross-env CYPRESS_INSTALL_BINARY='\\localserver\cypress\3.4.1\cypress.zip'",
    ...
  },

但是在 preinstall 完成并且 install 开始之后,cross-env 设置的环境变量似乎“消失”了,因为 cypress 尝试从网络。我同意它是临时的,但它需要在安装命令中持续存在。还看到了带有 .env 文件的解决方案,但据我所知,这些解决方案都不支持 install 步骤。

我当前的解决方案是在预安装步骤中运行整个cypress安装,它可以工作,但每次都运行双重安装似乎没有必要。

所以,我所要求的是一种让开发人员只需在全新计算机上运行以下命令即可完成的方法。

git clone ...
cd ...
npm install

我怎样才能做到这一点?

最佳答案

我这边的情况相同,只是我想阻止在本地计算机上安装 cypress。

通过将 .npmrc 添加到项目的根目录并添加到版本控制来解决此问题。

<小时/>

.npmrc 的内容:

CYPRESS_INSTALL_BINARY=0

<小时/>

由于在安装时使用了环境变量,因此无法使用 cross-env 解决方案,因为无法确定 cross-env 是否已安装.

请告诉我它是否有帮助或者您已经有其他解决方案。

关于node.js - 如何设置在 "npm install"期间使用的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57431439/

相关文章:

javascript - Req.Body 未定义 NODE.JS POST 请求

c++ - 为什么 getenv() 返回一个非常量字符串

linux - Linux 环境变量名称中允许的字符

linux - 致命的 : $HOME not set on POP OS

javascript - 使用 npm link 命令时出现错误

node.js - npm install 命令下载所需软件包的源位置是什么?

javascript - 捕获 ESLint 中所有声明的变量

javascript - DiscordJS,回复特定用户ID

node.js - 构建 :Cannot find type definition file for 'node'

node.js - 在预发布之前安装本地私有(private) NPM 依赖项