如何将本地模块指定为npm软件包依赖项

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

"express"     : "3.1.1"

我想模块化地构建自己的代码,并通过package.json安装一组本地(即我当前所在的文件系统上的)模块。我知道我可以通过运行以下命令安装本地模块:

npm install path/to/mymodule

但是,我不知道如何通过package.json依赖关系结构来实现这一点。--save在此命令中使用该选项只是将其"mymodule": "0.0.0"放入我的package.json中(不引用文件路径位置)。如果然后从node_modules中删除已安装的版本,并尝试从package.json重新安装,它将失败(因为它在中央注册表中查找“ mymodule”,并且不在本地查找)。

我敢肯定,这是一种告诉"dependencies": {}结构我要从文件系统路径安装它的方法,但是不知道如何。

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

西门2020/03/23 09:19:25

在对该npm link命令进行了很多努力(为开发本地模块而不将其发布到注册表或在node_modules文件夹中维护单独的副本的建议解决方案)之后,我构建了一个小型npm模块来解决此问题。

该修复程序需要两个简单的步骤

第一:

npm install lib-manager --save-dev

其次,将此添加到您的package.json

{  
  "name": "yourModuleName",  
  // ...
  "scripts": {
    "postinstall": "./node_modules/.bin/local-link"
  }
}

有关更多详细信息,参见https://www.npmjs.com/package/lib-manager希望它可以帮助某人。

番长古一GO2020/03/23 09:19:25

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

看来答案是npm linkhttps : //docs.npmjs.com/cli/link

村村2020/03/23 09:19:25

简短答案:

npm install --save ../my-local-repo

注意:请确保您的本地项目实际上已配置为模块。请参阅创建NodeJS模块

从NPM 2.0.0开始,本地支持导入本地依赖项。danilopopeye在回答类似问题记录了这一点我已将其回复复制到此处,以帮助需要查找正确答案的任何人,因为该问题在Google的搜索结果中排名很高。

此功能已在npm的2.0.0版本中实现。例如:

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

以下任何路径均有效:

../foo/bar
~/foo/bar
./foo/bar
/foo/bar
猴子村村2020/03/23 09:19:25

最后我找不到整洁的方法,所以我去创建了一个目录local_modules,然后将此bashscript添加到scripts-> preinstall中的package.json中。

#!/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