我正在使用git,并有一个依赖于外部项目的node.js模块,该项目也托管在git存储库中。我将外部项目添加为子模块,现在我正在尝试创建一个npm包。
由于外部依赖项不是npm包(也不是node模块),我认为我不能使用npm submodule
命令,因此我想出了在package.json
文件中使用this预安装脚本:
"scripts": { "preinstall" : "git submodule update --init"}
当我在包目录中执行
npm install
时,它可以正常工作,但是当我尝试直接从我的远程git存储库或使用npm pack
创建的tarball安装软件包时,我会收到以下错误消息:
You need to run this command from the toplevel of the working tree.我也尝试了(如错误消息所说):
"scripts": { "preinstall" : "cd $(git rev-parse --show-toplevel) && git submodule update --init"}
这个命令没有显示任何错误,但也没有更新包目录中的子模块。
非常感谢您的帮助。
.git
目录吗?如果是这样的话,我应该能够在那里初始化一个git
仓库,并且由于.gitmodules
已经存在,所以我可以简单地更新git子模块
。 - fardjad.git
不是npm pack
生成的归档文件的一部分。运行git init
可能会起作用。值得一试。作为 npm 用户,我不确定是否希望获取给定版本的不同代码,但如果这是为了您自己的使用,并且您对此感到满意,那么可以这样做。 - Pascal Bellonclegit init
,它初始化了一个空的 git 仓库。但是我不得不再次手动添加submodules
;似乎在仓库中有.gitmodules
并不足以让git
识别submodules
。最后,我将我的包预安装脚本更改为git clone git://path/to/remote/repo
,并将远程仓库目录的名称添加到.npmignore
中,现在一切都正常工作了。 - fardjad