Npm pack 包含本地模块

Posted

技术标签:

【中文标题】Npm pack 包含本地模块【英文标题】:Npm pack to include local modules 【发布时间】:2019-09-11 04:06:33 【问题描述】:

我有一些本地模块,我想将它们包含在我的包中以发送到服务器。由于这些本地包不在 npm 注册表中,因此它们需要是包的一部分

我尝试了一些方法来使用 npm pack 将 node_modules 文件夹包含在包中,但似乎这根本不可能?

其次,我尝试在 package.json 文件的 bundledDepencies 中列出本地模块并使用 npm pack,但这也不包括本地模块,不无所谓;


    "name": "dev",
    "version": "1.0.0",
    "main": "main.js",
    "dependencies": 
        "local-module": "file:../../local-module"
    ,
    "bundledDependencies": [
        "local-module"
    ]

如何将这些本地模块包含在 dev 包中?

本地模块本身确实包含依赖项,不确定这是否会使事情变得更复杂?

【问题讨论】:

本地依赖在 GitHub 上吗? 我目前正在尝试做同样的事情,它似乎正在工作。一个问题是您需要在配置本地依赖项后运行npm install,以便 npm 在您的 node_modules 文件夹中创建指向本地模块的链接。 【参考方案1】:

前段时间我遇到了类似的问题,一个好的简单的解决方案就是将你的本地模块放入私有 git 存储库(现在在 GitHub 上免费,thanks Microsoft?)

然后,在您的package.json 中,添加:

"dependencies" : 
  "name1" : "git://github.com/user/project.git#commit-ish",
  "name2" : "git://github.com/user/project.git#commit-ish"

来源,npm docs

希望对你有所帮助?

【讨论】:

嘿 Alicia,我同意 Github 是这里最好的方法,我选择了这条路线。原来我必须将包上传到的服务器不支持 git.... :( 仍然很高兴在 Git 中设置它!【参考方案2】:

还有yalc,它为本地包创建本地存储。将本地包添加到商店后,您可以使用 yalc 将本地包复制到另一个包中。您还可以使用它来更新本地包。

【讨论】:

【参考方案3】:

我相信 Alicia 的方法是最干净的。但是对于遇到与我相同的问题的人,即服务器需要一个 tarball,但没有安装 git,我将我的本地包添加到项目中名为 repo 的单独文件夹中,并在 package.json 中将它们引用为;

"dependencies": 
  "my-local-package": "file:./repo/my-local-package"

【讨论】:

以上是关于Npm pack 包含本地模块的主要内容,如果未能解决你的问题,请参考以下文章

如何在流星包中指定本地 npm 模块

docker build 中的本地 npm 依赖“不包含 package.json 文件”,但使用 npm start 运行良好

使用 npm 安装本地模块?

npm pack / publish:找不到文件

本地 NPM 模块未正确安装

部署到 Heroku 时的本地或私有 NPM 模块