【发布时间】:2019-09-07 00:23:45
【问题描述】:
我正在开发一个将部署在 VM(Windows 操作系统)上的项目,但我无法下载依赖项,因为所有 npm 端口都被阻止并且无法打开它们。 所以解决这个问题的唯一方法是压缩所有本地依赖项,然后将它们复制到 VM。这很简单,但是我使用了两个全局依赖项:PM2 和 pm2-windows-service。
我的问题是如何将这两个依赖项复制到 VM 中,然后使它们成为全局的?
【问题讨论】:
我正在开发一个将部署在 VM(Windows 操作系统)上的项目,但我无法下载依赖项,因为所有 npm 端口都被阻止并且无法打开它们。 所以解决这个问题的唯一方法是压缩所有本地依赖项,然后将它们复制到 VM。这很简单,但是我使用了两个全局依赖项:PM2 和 pm2-windows-service。
我的问题是如何将这两个依赖项复制到 VM 中,然后使它们成为全局的?
【问题讨论】:
您可以在本地安装全局依赖项并从 node_modules 路径中使用它们,例如:
node node_modules/.bin/pm2 start app.js
而不是
pm2 start app.js
实际上,我倾向于建议使用最少数量的全局依赖项,即。只有 npm
【讨论】:
来自npm-install:
npm install -g <tarball file>
还有:
一个包是:
a) a folder containing a program described by a package.json file b) a gzipped tarball containing (a) ...
还有:
npm install <tarball file>:安装一个位于文件系统上的包。注意:如果你只是 想要将 dev 目录链接到你的 npm 根目录,你可以这样做 使用 npm 链接很容易。
压缩包要求:
- 文件名必须使用 .tar、.tar.gz 或 .tgz 作为扩展名。
- 包内容应位于 tarball 内的子文件夹中(通常称为 package/)。 npm 剥离一个目录 安装包时的层(相当于 tar x --strip-components=1 运行)。
- 包必须包含一个带有名称和版本属性的 package.json 文件。
示例:
npm install ./package.tgz
所以只需复制两个(打包的)包并在您的 VM 中运行上述命令,例如 npm i -g /pm2.tar。
【讨论】: