我有一个应用程序,它对第三方模块有通常的依赖集(例如。'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”:{}结构的一种方式,我希望它从文件系统路径安装,但不知道如何。
还有人有这个问题吗?
谢谢。
如果你可以简单地发布你在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上,然后告诉你的父包。从git安装依赖:https://npmjs.org/doc/json.html#Git-URLs-as-Dependencies
NPM安装现在支持这个功能
npm install --save ../path/to/mymodule
要做到这一点,mymodule必须配置为一个具有自己package.json的模块。参见创建NodeJS模块。
从npm 2.0开始,本地依赖项在本地得到支持。参见danilopopeye对类似问题的回答。我在这里复制了他的回答,因为这个问题在网络搜索结果中排名非常高。
该特性在npm 2.0.0版本中实现。例如:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
以下任何路径都是有效的:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
同步更新
由于npm install <folder>将包添加到当前项目的符号链接目录中,任何对本地包的更改都会自动同步。
在与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。希望它能帮助到别人。
使用安装本地
我遇到了来自本地依赖的react安装冲突的问题。
我使用install-local npm包解决了这个错误。这个包不创建符号链接,这解决了我的问题。
步骤:
执行NPM I -g install-local命令
在目标存储库中执行NPX install-local——save <local-path>命令安装本地依赖项
进一步阅读:https://www.npmjs.com/package/install-local
当我试图用npm install——save <local-directory>安装本地包时,我收到的错误:
错误:无效的钩子调用。钩子只能在函数组件的内部调用。这可能是由于以下原因之一:
React和渲染器的版本可能不匹配(比如React DOM)
你可能违反了胡克斯的规矩
你可能在同一个应用程序中有多个React副本