Node.js NPM CI跨平台可靠性

Node.js NPM CI跨平台可靠性,node.js,npm-install,Node.js,Npm Install,我们的NodeJS应用程序应该在Linux和Windows服务器上运行。我们面临以下困境: 如果我们在CI构建时运行npm i,那么由于开发人员笔记本电脑的npm和构建服务器之间的差异,有时会出现错误 但是,如果我们运行npmci,那么构建可能会锁定到开发者笔记本电脑(Windows)的平台上,而不会在linux构建服务器上工作 也许我们的假设是错误的: 我们是否需要构建两个版本的应用程序:每个平台一个 npmci是否通过package lock.json将我们锁定在开发人员机器的平台上

我们的NodeJS应用程序应该在Linux和Windows服务器上运行。我们面临以下困境:

  • 如果我们在CI构建时运行
    npm i
    ,那么由于开发人员笔记本电脑的npm和构建服务器之间的差异,有时会出现错误
  • 但是,如果我们运行
    npmci
    ,那么构建可能会锁定到开发者笔记本电脑(Windows)的平台上,而不会在linux构建服务器上工作
也许我们的假设是错误的:

  • 我们是否需要构建两个版本的应用程序:每个平台一个
  • npmci
    是否通过
    package lock.json
    将我们锁定在开发人员机器的平台上

开发人员可以在Windows笔记本电脑和Windows服务器上工作,但不能在Linux服务器上工作的构建示例包括
strapi
之类的应用程序或
sharp
之类的包,它们为平台编译内容(.dll用于Windows,godnowwhat用于Linux).

npm ci根据package-lock.json进行安装,这对于所有开发人员和ci环境来说应该是相同的,因为它已提交。有些npm软件包依赖于平台,因此如果同时部署到windows和linux,则需要单独的构建构件。问题是我是否可以使用
npm ci
构建两个不同的环境?我担心这会把我们锁在站台上,我明白了。我不相信你要找的是
npmci
;它不是一个平台无关的命令。我相信将你的应用程序对接是一种适合你的方法。另一个是来自CI的多个构建;e、 g:那么我们回到了我的困境的开始:如果在两个不同的构建服务器(linux和windows)上使用
npm i
我根据PACKAGECHORK.JSON运行安装的风险,因此在开发中与构建环境相比,在不同的包版本中结束。在构建服务器上运行<代码> NPM Ci>代码,这会使C++源的平台构建的节点JS绑定风险不同,但是JS包本身也不相同。我认为这是一个相对较小的风险。npm ci根据package-lock.json进行安装,这对于所有开发人员和ci环境来说应该是相同的,因为它已经提交。有些npm软件包依赖于平台,因此如果同时部署到windows和linux,则需要单独的构建构件。问题是我是否可以使用
npm ci
构建两个不同的环境?我担心这会把我们锁在站台上,我明白了。我不相信你要找的是
npmci
;它不是一个平台无关的命令。我相信将你的应用程序对接是一种适合你的方法。另一个是来自CI的多个构建;e、 g:那么我们回到了我的困境的开始:如果在两个不同的构建服务器(linux和windows)上使用
npm i
我根据PACKAGECHORK.JSON运行安装的风险,因此在开发中与构建环境相比,在不同的包版本中结束。在构建服务器上运行<代码> NPM Ci>代码,这会使C++源的平台构建的节点JS绑定风险不同,但是JS包本身也不相同。我认为这是一个相对较小的风险。