如何在安装前更新git-submodules包中的非npm-package npm?
我正在使用git并拥有一个node.js模块,该模块依赖于也托管在git存储库中的外部项目。我将外部项目添加为子模块,现在我正在尝试创建一个npm包。
由于外部依赖不是npm包(也不是节点模块),我认为我不能使用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"}
这个没有显示任何错误,但也没有更新包目录中的子模块。
任何帮助都将不胜感激。
答案 0 :(得分:1)
您下载的npm
一旦解压缩,就不再包含git信息(无.git
目录)。
所以没有git命令可以这样工作,但是因为你有git信息而在本地工作。
对于解决方案,您可能必须创建一个执行npm pack
执行操作的脚本,但不会忽略子模块。
不是我尝试过的东西,但是这个脚本https://github.com/Kentzo/git-archive-all
可以开箱即用
git-archive-all --prefix package/ module.tgz
可能需要一些调整......