如何将本地模块指定为npm包的依赖关系

我有一个应用程序,它具有在依赖关系中的package.json文件中指定的第三方模块(例如“express”)的通常依赖关系。 例如

"express" : "3.1.1" 

我想模块化构build我自己的代码,并有package.json模块安装一组本地(意味着我目前在文件系统中)模块。 我知道我可以通过运行来安装本地模块:

 npm install path/to/mymodule 

但是,我不知道如何通过package.json依赖关系结构来做到这一点。 在这个命令中使用--save选项只需将"mymodule": "0.0.0"放入我的package.json(不引用文件path位置)。 如果我然后从node_modules中删除安装的版本,并尝试从package.json重新安装,它会失败(因为它在中央registry中查找“mymodule”,而不是在本地查找)。

我确定这是一种告诉"dependencies": {}我希望从文件系统path安装它,但不知道如何。

还有其他人有这个问题吗? 谢谢。

从NPM 2.0.0开始,本地支持导入本地依赖项。 这是由danilopopeye回应类似的问题logging 。 我在这里复制了他的回复,以帮助任何需要find正确答案的人,因为这个问题在Google的search结果中排名很高。

这个function是在npm的2.0.0版本中实现的。 例如:

 { "name": "baz", "dependencies": { "bar": "file:../foo/bar" } } 

以下任何path也是有效的:

 ../foo/bar ~/foo/bar ./foo/bar /foo/bar 

请参阅: package.json中的本地依赖项

它看起来像答案是npm link : https : npm link

我找不到一个简单的方法,所以我去创build一个名为local_modules的目录,然后在脚本中添加这个bash脚本到package.json-> preinstall

 #!/bin/sh for i in $(find ./local_modules -type d -maxdepth 1) ; do packageJson="${i}/package.json" if [ -f "${packageJson}" ]; then echo "installing ${i}..." npm install "${i}" fi done 

如果可以接受,只需在node_modules中预先安装模块,并将其与其他文件一起发布,则可以这样做:

 // ./node_modules/foo/package.json { "name":"foo", "version":"0.0.1", "main":"index.js" } // ./package.json ... "dependencies": { "foo":"0.0.1", "bar":"*" } // ./app.js var foo = require('foo'); 

你也可能想要在git上存储你的模块,并告诉你的父类package.json从git安装依赖项: https : //npmjs.org/doc/json.html#Git-URLs-as-Dependencies

在用npm link命令(build议开发本地模块而不发布到registry或在node_modules文件夹中保存单独的副本的build议解决scheme)之后,我build立了一个小的npm模块来帮助解决这个问题: https:// www。 npmjs.com/package/lib-manager

希望它可以帮助别人。