我有一个应用程序,它对依赖项下的package.json文件中指定的第三方模块(例如'express')具有通常的依赖关系.例如
"express" : "3.1.1"
Run Code Online (Sandbox Code Playgroud)
我想模块化地构建我自己的代码,并且有一组本地(意思是我当前在文件系统上)的模块由package.json安装.我知道我可以通过运行来安装本地模块:
npm install path/to/mymodule
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何通过package.json依赖项结构实现这一点.使用--save此命令中的选项只是放入"mymodule": "0.0.0"我的package.json(不引用文件路径位置).如果我然后从node_modules中删除已安装的版本,并尝试从package.json重新安装,它将失败(因为它在中央注册表中查找"mymodule",并且看起来不是本地的).
我确信这是一种告诉"dependencies": {}结构我希望从文件系统路径安装它的方法,但不知道如何.
还有其他人有这个问题吗?谢谢.
Ran*_*Dev 327
从NPM 2.0.0开始,本机支持导入本地依赖项.danilopopeye在回答类似问题时记录了这一点.我在这里复制了他的回复,以帮助任何需要找到正确答案的人,因为这个问题在Google的搜索结果中排名很高.
此功能是在npm的2.0.0版本中实现的.例如:
Run Code Online (Sandbox Code Playgroud)npm install --save ../my-local-repo以下任何路径也有效:
Run Code Online (Sandbox Code Playgroud){ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
jas*_*ord 40
看起来答案是npm link:https://docs.npmjs.com/cli/link
我最终找不到一个简洁的方法,所以我去创建一个名为的目录local_modules,然后在脚本 - > preinstall中将这个bashscript添加到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
Run Code Online (Sandbox Code Playgroud)
以下内容应该有所帮助(假设库和应用程序共享相同的父文件夹)
在图书馆:
npm pack // this will pack the library in a .tgz file
Run Code Online (Sandbox Code Playgroud)
在需要库的应用程序中
npm i ../mylibrary/../library-package-X.X.tgz
Run Code Online (Sandbox Code Playgroud)
这将对您的应用程序进行以下更改
package.json现在将有
"@mylibrary": "file:../mylibrary/library-package-X.X.tgz",
Run Code Online (Sandbox Code Playgroud)
小智 7
您只需添加到项目中的 package.json 文件即可
"package-name" : "path/to/package"
Run Code Online (Sandbox Code Playgroud)
然后npm i在你的项目中运行
小智 6
在使用该npm link命令(无需将它们发布到注册表或在 node_modules 文件夹中维护单独副本的情况下开发本地模块的建议解决方案)苦苦挣扎之后,我构建了一个小的 npm 模块来帮助解决这个问题。
修复需要两个简单的步骤。
第一的:
npm install lib-manager --save-dev
Run Code Online (Sandbox Code Playgroud)
其次,将此添加到您的package.json:
{
"name": "yourModuleName",
// ...
"scripts": {
"postinstall": "./node_modules/.bin/local-link"
}
}
Run Code Online (Sandbox Code Playgroud)
更多详细信息,请访问https://www.npmjs.com/package/lib-manager。希望它可以帮助某人。
在工作中,我们有一个通用库,由单个存储库中的几个不同项目使用。最初我们使用发布的(私有)版本(npm install --save rp-utils),但这导致我们开发时进行了大量不必要的版本更新。该库位于应用程序的姐妹目录中,我们可以使用相对路径而不是版本。package.json 中的 "rp-utils": "^1.3.34" 现在是:
{
"dependencies": { ...
"rp-utils": "../rp-utils",
...
Run Code Online (Sandbox Code Playgroud)
rp-utils 目录包含可发布的 npm 包
| 归档时间: |
|
| 查看次数: |
193615 次 |
| 最近记录: |