如何在安装前在我的npm软件包中更新非-npm-packagegit-submodules包?在npm软件包中使用非npm-git子模块
我正在使用git并且有一个node.js模块,它依赖于也托管在git存储库中的外部项目。我将外部项目添加为子模块,现在我试图制作一个npm包。
由于外部的依赖是不是NPM包(也不是一个节点模块),我想我不能使用npm submodule
命令,所以我在package.json
文件提出了this前脚本:
"scripts": { "preinstall" : "git submodule update --init"}
当我在包目录下执行npm install
,它工作正常,但是当我试图直接从我的远程git仓库或npm pack
作出的压缩包安装包,我得到以下错误:
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'submodules'。 – fardjad 2013-03-08 10:00:53
我确定.git不是'npm pack'生成的档案文件的一部分。运行'git init'可能会起作用。值得一试。作为npm消费者,我不确定我想为给定版本获得不同的代码,但是如果这是供您自己使用的,并且您没有问题,那么确定。 – 2013-03-08 10:17:37
我试过'git init',它初始化了一个空的git仓库。但我不得不再次手动添加子模块;似乎在repository中有'.gitmodules'对于'git'来识别'submodules'是不够的。最后,我将我的软件包预安装脚本更改为'git clone git:// path/to/remote/repo',并且将远程仓库目录的名称添加到'.npmignore'中,现在一切正常。 – fardjad 2013-03-08 12:48:16