package.json中的本地依赖

我想做这样的事情,所以npm install也安装../somelocallibpackage.json或更重要的是它的依赖。

 "dependencies": { "express": "*", "../somelocallib": "*" } 

2014年9月更新

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

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

以下任何path也是有效的:

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

本地软件包将被复制到前缀 ( ./node-modules )。


老答案

somelocallib作为依赖项放在你的package.json

 "dependencies": { "somelocallib": "0.0.x" } 

然后运行npm link ../somelocallib将安装你正在使用的版本作为符号链接

 app@0.0.1 /private/tmp/app └── somelocallib@0.0.1 -> /private/tmp/somelocallib 

参考: link(1)

现在可以直接在package.json指定本地节点模块安装path。 从文档:

本地path

从版本2.0.0开始,可以提供包含包的本地目录的path。 本地path可以使用npm install -Snpm install --save ,使用以下任何一种forms:

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

在这种情况下,它们将被规范化为相对path并添加到您的package.json 。 例如:

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

此function对本地离线开发和创build需要npm安装的testing非常有用,您不希望在外部服务器上安装该软件,但在将软件包发布到公共registry时不应使用该function。

这对我有用。

将以下内容放在package.json文件中

 "scripts": { "preinstall": "npm install ../my-own-module/" } 

如果你想进一步自动化,因为你正在检查你的模块到版本控制,并不想依靠开发人员记住npm链接,你可以添加到你的package.json“脚本”部分:

 "scripts": { "postinstall": "npm link ../somelocallib", "postupdate": "npm link ../somelocallib" } 

这感觉超越哈克,但似乎“工作”。 从这个NPM问题得到的提示: https : //github.com/isaacs/npm/issues/1558#issuecomment-12444454

实际上,从npm 2.0开始,现在有支持本地path(见这里 )。

我知道npm install ../somelocallib工程。

但是,我不知道你在问题中显示的语法是否会从package.json工作…

不幸的是, doc似乎只提到URL作为依赖。

尝试file:///.../...tar.gz ,指向一个压缩的本地lib …并告诉我们它是否工作。

这对我有效:首先,确保npm目录有合适的用户

 sudo chown -R myuser ~/.npm sudo chown -R myuser /usr/local/lib/node_modules 

然后你的package.json链接目录

 "scripts": { "preinstall": "npm ln mylib ../../path/to/mylib" }, "dependencies": { "mylib" : "*" } 

好奇…..至less在Windows(我的npm是3.something)我需要做的:

 "dependencies": { "body-parser": "^1.17.1", "module1": "../module1", "module2": "../module2", 

当我做了一个npm install ../module1 --save它导致绝对path,而不是相对每个文档。

我搞砸了一下,确定../xxx就足够了。

具体来说,我有本地节点模块检出d:\ build \ module1,d:\ build \ module2和我的节点项目(应用程序)在d:\ build \ nodeApp。

为了“安装”,我:

 d:\build\module1> rmdir "./node_modules" /q /s && npm install d:\build\module2> rmdir "./node_modules" /q /s && npm install d:\build\nodeApp> rmdir "./node_modules" /q /s && npm install 

module1的package.json依赖于“module2”:“../module2”; module2没有本地依赖; nodeApp具有依赖关系“module1”:“../module1”和“module2”:“../module2”。

不知道这是否只适用于我,因为所有3个文件夹(module1,module2和nodeApp)坐在同一水平…….

这是你将如何添加本地依赖项:

npm install file:src/assets/js/FILE_NAME

将它从NPM添加到package.json中:

npm install --save file:src/assets/js/FILE_NAME

直接添加到package.json像这样:

 .... "angular2-autosize": "1.0.1", "angular2-text-mask": "8.0.2", "animate.css": "3.5.2", "LIBRARY_NAME": "file:src/assets/js/FILE_NAME" ....