我有一个应用程序,它对第三方模块有通常的依赖集(例如。'express')。Json文件下的依赖。如。

"express"     : "3.1.1"

我想模块化地构造我自己的代码,并有一组本地(意思是我目前在的文件系统上)模块被package.json安装。我知道我可以通过运行以下命令来安装本地模块:

npm install path/to/mymodule

但是,我不知道如何通过包来实现这一点。Json依赖结构。在这个命令中使用——save选项只是简单地将"mymodule": "0.0.0"放入我的包中。Json(不引用文件路径位置)。如果我从node_modules中删除已安装的版本,并尝试从包中重新安装。Json,它会失败(因为它在中央注册表中寻找“mymodule”,而不是在本地寻找)。

我相信这是告诉“dependencies”:{}结构的一种方式,我希望它从文件系统路径安装,但不知道如何。

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


当前回答

我不能找到一个整洁的方法,所以我去创建一个名为local_modules的目录,然后将这个bashscript添加到包。脚本中的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

其他回答

我不能找到一个整洁的方法,所以我去创建一个名为local_modules的目录,然后将这个bashscript添加到包。脚本中的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

在与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。希望它能帮助到别人。

在工作中,我们有一个公共库,在一个存储库中由几个不同的项目使用。最初我们使用的是已发布的(私有)版本(npm install—save rp-utils),但在开发过程中,这导致了许多不必要的版本更新。库位于应用程序的姐妹目录中,我们可以使用相对路径而不是版本。而不是“rp-utils”:“^1.3.34”在包。Json现在是:

{ 
  "dependencies": { ...
    "rp-utils": "../rp-utils",
   ...

rp-utils目录包含一个可发布的NPM包

你可以把它加到你的套餐里。Json文件在您的项目

"package-name" : "path/to/package"

然后在你的项目中运行NPM I

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

看起来答案是npm链接:https://docs.npmjs.com/cli/link