我的节点应用程序将部署在无法访问互联网的银行中。我可以下载本地目录中的所有节点模块,然后从中安装它们,或者只是将 node_modules 复制到银行机器上吗?任何安全实用的建议将不胜感激,谢谢。
或
如何在node_modules不使用internet的情况下添加依赖项。
我的节点应用程序将部署在无法访问互联网的银行中。我可以下载本地目录中的所有节点模块,然后从中安装它们,或者只是将 node_modules 复制到银行机器上吗?任何安全实用的建议将不胜感激,谢谢。
或
如何在node_modules不使用internet的情况下添加依赖项。
将 offline-npm 添加到您的项目中以提供与 npm 兼容的 tgz 文件,该文件包含使用 npm install 进行离线安装的所有依赖项。
此外,您可以使用 offline-npm -n 从本地 npm 缓存目录安装软件包
用于安装
npm install -g offline-npm
用法
1)打开终端并转到您要准备离线使用的项目。此文件夹需要包含一个package.json文件。
2)准备您的项目以供离线使用
offline-npm --add
3) 这会更改 package.json 文件并添加一个包含所有依赖项的脱机文件夹。
打包你的项目
npm pack
有关更多详细信息,请访问链接
希望此答案对您有用。
通常,您会希望将您的产品捆绑node_modules到可部署的工件中。
这里有一些关于任何本机依赖项的问题,因为您需要将构建环境的 nodejs 版本与目标系统相匹配。
根据我的经验,实现这一目标的最简单方法是使用 docker 构建和打包您的部署。虽然直接在主机上运行时可以这样做,但您可能会发现最安全的做法是避免使用本机依赖项来消除任何因 nodejs 或 os 更新而中断的风险。
我还成功地将nodejs二进制文件打包到我的部署工件中,直接部署在centos主机上,但是当时我们混合使用centos 6和centos 7主机,这带来了与不同glibc版本相关的额外复杂性导致nodejs无法从系统提供的库启动。
简而言之,如果可以的话,我会使用 docker 将您的应用程序打包成一个完全独立的图像。
您可以将 node_modules 复制到部署机器中,但这是不好的做法。
还有其他解决方案,例如使用local-npm包...您的 npm 安装是从注册表中获取的,然后模块及其依赖项存储在本地 PouchDB 数据库中。这会缓存它们,以便后续 npm 安装使用本地缓存而不是调用网络。local-npm 还负责在模块更改时保持更新。它通过侦听远程注册表的更改来做到这一点,因此您不必担心过时。
或捆绑您的软件包以离线使用它们,您可以访问此链接以了解有关离线安装 npm 软件包的更多详细信息: https ://addyosmani.com/blog/using-npm-offline/
Yarn 的主要优点之一是它可以从文件系统中的文件安装 node_modules。我们称之为“离线镜像”,因为它会在第一次构建期间镜像从注册表下载的文件并将它们存储在本地以供将来构建。
将yarn.tar.gz下载到本地仓库,并安装在本地 node_modules 目录中。
npm install yarn.tar.gz --no-save
# 运行yarn install,并将节点模块(.tar.gz)下载到离线镜像目录'$REPOSITORY/yarn/yarn-offline-mirror'。
npm run online-install
# 使用 yarn.lock 文件,从离线镜像目录 '$REPOSITORY/yarn/yarn-offline-mirror' 安装 node_modules
npm run offline-install
错误无法在离线模式下发出请求(“http://....”)
4.1.2. 原因间接依赖无法下载到离线镜像目录
4.1.3. 解析度yarn config set yarn-offline-mirror-pruning false