我有一个应用程序,它具有依赖关系下 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": {}
结构我希望它从文件系统路径安装的方式,但不知道如何。
还有其他人有这个问题吗?谢谢。
package.json
没有与我们在 Gemfile
中的功能等效的功能。
npm install 现在支持这个
npm install --save ../path/to/mymodule
为此,必须将 mymodule
配置为具有自己的 package.json
的模块。请参阅Creating NodeJS modules。
从 npm 2.0 开始,本机支持本地依赖项。请参阅danilopopeye's answer to a similar question。我在这里复制了他的回答,因为这个问题在网络搜索结果中排名很高。
此功能在 npm 的 2.0.0 版本中实现。例如:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
以下任何路径也是有效的:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
同步更新
由于 npm install <folder>
将目录中的包作为符号链接添加到当前项目中,因此对本地包的任何更改都会自动同步。
请参阅:Local dependency in package.json
看起来答案是 npm link
:https://docs.npmjs.com/cli/link
symlink
,那么一旦依赖项完成构建,父项目将如何知道重新构建?
最后我找不到一个简洁的方法,所以我去创建一个名为 local_modules
的目录,然后将此 bashscript 添加到脚本中的 package.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 提供更多详细信息。希望它可以帮助某人。
你可以在你的项目中添加到你的 package.json 文件中
"package-name" : "path/to/package"
然后在您的项目中运行 npm i
如果可以简单地将预先安装在 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 上并告诉您的父 package.json 从 git 安装依赖项:https://npmjs.org/doc/json.html#Git-URLs-as-Dependencies
在工作中,我们有一个公共库,供几个不同的项目使用,它们都在一个存储库中。最初我们使用已发布的(私有)版本(npm install --save rp-utils),但这会导致我们在开发过程中进行大量不必要的版本更新。该库位于应用程序的姊妹目录中,我们可以使用相对路径而不是版本。而不是 package.json 中的 "rp-utils": "^1.3.34" 现在是:
{
"dependencies": { ...
"rp-utils": "../rp-utils",
...
rp-utils 目录包含一个可发布的 npm 包
rp-utils
时都需要执行 npm install
吗?
npm update rp-utils
更新该依赖项。
使用本地安装
我遇到了来自本地依赖项的冲突反应安装问题。我通过使用 local-install
npm 包解决了该错误。这个包不创建符号链接,这解决了我的问题。
脚步:
在目标存储库中运行 npm i -g local-install 运行 npx install-local --save
进一步阅读:https://www.npmjs.com/package/install-local
我在尝试使用 npm install --save <local-directory>
安装本地软件包时收到的错误:
错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一: 您可能有不匹配的 React 版本和渲染器(例如 React DOM) 您可能违反了 Hooks 规则 您可能在同一个应用程序中拥有多个 React 副本
npm i install-local
不是本地安装
npx install-local
是正确的命令。我把话翻了。
不定期副业成功案例分享
"mymodule":"file:mymoduledir"
这样的本地相对路径npm install --save ../my-local-repo
import { HelloWorld } from "my-test-lib";
,但我收到“找不到模块”错误。请看一下stackoverflow.com/questions/46818083/…import { HelloWorld } from "my-test-lib";
的“无法正常模块”错误