【发布时间】:2019-06-06 10:05:31
【问题描述】:
我有一个 node.js 项目,它使用我在 package.json 中列出的依赖项。这一切都适用于依赖项,但是我希望能够在无需人们下载依赖项的情况下发布我的项目。如何将依赖项复制到我的项目中,并在我的项目文件中仍然与 require('') 一起使用它?
【问题讨论】:
标签: node.js npm dependencies package.json
我有一个 node.js 项目,它使用我在 package.json 中列出的依赖项。这一切都适用于依赖项,但是我希望能够在无需人们下载依赖项的情况下发布我的项目。如何将依赖项复制到我的项目中,并在我的项目文件中仍然与 require('') 一起使用它?
【问题讨论】:
标签: node.js npm dependencies package.json
这取决于您的交付流程。 (在什么环境下,什么样的应用程序,什么工具,你将如何以及在哪里交付,......)
如果您的package.json dependencies 中存在依赖关系,那么您可以通过执行npm install --production 来检索它,并照常在源代码中使用require('lib');。
也可以设置你的环境NODE_ENV=production,然后运行npm install。
如果你不能运行npm,我建议你在你的分发包中包含node_modules。
和你聊了聊,貌似是npm没有安装依赖。
它被挂在一个可以使用git存储库安装插件的系统中。
因为您使用 git 存储库来托管您的模块,所以当您使用 npm install git+https://github.com/namespace/repo.git 安装模块时,您应该能够将 node_modules 保留为 .gitignore,它会自动安装,因为 npm install 读取 @987654337 @。
如果您的客户不依赖 npm,那么您唯一的选择是将 node_modules 保留在您的 github 存储库中。
在这种情况下,您的导入应该如下所示:
require('./node_modules/module-a');
也许还有第三种选择,检查您的客户端软件是否可以从 npm 注册表安装,如果是这种情况,那么您应该可以忽略来自 repo 的 node_modules,如果不能,则这意味着您不能使用 github 存储库来安装 npm,而是使用真正的 npm 注册表,例如 https://registry.npmjs.com 或使用 https://github.com/verdaccio/verdaccio 托管您自己的注册表
【讨论】:
node_modules 中的事实不是节点的问题,默认情况下,它在node_modules 中查找,因此您不应该移动您的依赖项。另外,我必须问你如何使用你的模块。因为如果您通过运行npm publish 在 npm 上发布它,那么它将打包所有内容,包括您的节点模块。您不需要在 github 上拥有 node_modules 文件夹,但在创建存档时需要它。