4

如何在安装之前更新我的的非 npm-package

我正在使用 git 并且有一个 node.js 模块,该模块依赖于一个外部项目,该项目也托管在一个 git 存储库中。我将外部项目添加为子模块,现在我正在尝试制作一个 npm 包。

由于外部依赖不是 npm 包(也不是节点模块),我想我不能使用npm submodule命令,所以我想出了这个文件中的预安装脚本package.json

"scripts": { "preinstall" : "git submodule update --init"}

当我npm install在包目录中执行时,它工作正常,但是当我尝试直接从我的远程 git 存储库或使用 tarball 安装包时npm pack,我收到以下错误:

您需要从工作树的顶层运行此命令。

我也尝试过(如错误消息所述):

"scripts": { "preinstall" : "cd $(git rev-parse --show-toplevel) && git submodule update --init"}

这个没有显示任何错误,但也没有更新包目录中的子模块。

任何帮助,将不胜感激。

4

1 回答 1

3

您下载的npm,一旦提取,不再包含 git 信息(无.git目录)。

所以没有 git 命令会以这种方式工作,而是在本地工作,因为你有 git 信息。

至于解决方案,您可能必须创建一个脚本来执行该npm pack操作,但不忽略子模块。

不是我尝试过的,但是这个脚本https://github.com/Kentzo/git-archive-all可能是开箱即用的,比如

git-archive-all --prefix package/ module.tgz

可能需要一些调整...

于 2013-03-07T22:18:04.203 回答