[英]How to specify local modules as npm package dependencies
我有一個應用程序,它具有依賴關系下 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": {}
結構我希望它從文件系統路徑安裝的方式,但不知道如何。
還有其他人有這個問題嗎? 謝謝。
npm install
現在支持這個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>
將目錄中的包作為符號鏈接添加到當前項目中,因此對本地包的任何更改都會自動同步。
請參閱: package.json 中的本地依賴項
看起來答案是npm link
: https ://docs.npmjs.com/cli/link
最后我找不到一個簡潔的方法,所以我去創建一個名為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
在使用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 包
使用本地安裝
我遇到了來自本地依賴項的沖突反應安裝問題。 我通過使用local-install
npm 包解決了這個錯誤。 這個包不創建符號鏈接,這解決了我的問題。
腳步:
npm i -g local-install
npx install-local --save <local-path>
以安裝本地依賴項進一步閱讀: https ://www.npmjs.com/package/install-local
嘗試使用npm install --save <local-directory>
安裝本地軟件包時收到的錯誤:
錯誤:無效的掛鈎調用。 鈎子只能在函數組件的主體內部調用。 這可能由於以下原因之一而發生:
- 你可能有不匹配的 React 版本和渲染器(例如 React DOM)
- 您可能違反了 Hooks 規則
- 你可能在同一個應用程序中擁有多個 React 副本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.