私は、このような何かをしたいnpm install
また、インストールpackage.json
の../somelocallib
その依存関係や、より重要な。
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
私は、このような何かをしたいnpm install
また、インストールpackage.json
の../somelocallib
その依存関係や、より重要な。
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
回答:
この機能は、npmのバージョン2.0.0で実装されました。例:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
次のパスも有効です。
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
ローカルパッケージはプレフィックスにコピーされます(./node-modules
)にます。
通常somelocallib
どおりに依存関係を入れますpackage.json
:
"dependencies": {
"somelocallib": "0.0.x"
}
次にnpm link ../somelocallib
、npmを実行すると、作業中のバージョンがシンボリックリンクとしてインストールされます。
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
リファレンス:link(1)
npm dedup
この問題を修正できます。npmjs.org/doc/cli/npm-dedupe.html
npm install <folder>
説明によると、ディレクトリにパッケージを現在のプロジェクトのシンボリックリンクとしてインストールします。
ローカルノードモジュールのインストールパスをpackage.json
直接指定できるようになりました。ドキュメントから:
ローカルパス
バージョン2.0.0以降では、パッケージを含むローカルディレクトリへのパスを提供できます。ローカルパスは、
npm install -S
またはnpm install --save
を使用して、次のいずれかの形式で保存できます。../foo/bar ~/foo/bar ./foo/bar /foo/bar
その場合、それらは相対パスに正規化され、に追加されます
package.json
。例えば:{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
この機能は、ローカルオフライン開発や、外部サーバーにアクセスしたくない場所にnpmのインストールを必要とするテストの作成に役立ちますが、パッケージをパブリックレジストリに公開する場合は使用しないでください。
"bar": "file:///home/user/src/foo/bar"
node:onbuild
イメージは現在のディレクトリのみをコピーするため、ノードアプリケーションをドッキングしようとすると、あらゆる問題が発生し../foo
ます。
npm install
して、LAN上のgitリポジトリのローカルコピーまたは別のgitリポジトリを持つことができる方法はありますか?上記を試してgit + sshからnpmをインストールすると、node_modulesディレクトリを調べて、git + sshを超えようとしないように見えます。これは、トップレベルのパッケージをインストールする方法です。
これでうまくいきます。
以下をpackage.jsonファイルに入れます
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
はモジュールフォルダーから削除されて作成され.npmignore
、初めて実行したときにを除くすべてのフォルダーに777を再帰的に適用しましたnode_modules
。しかし、はい、依存関係をインストールしました。npmバージョン1.4.14の使用。
"dependencies": { "my-own-module": "file:../my-own-module" }
?
npm link
行う必要がないことですnpm install
。
モジュールをバージョン管理にチェックインし、開発者がnpmリンクを覚えていることに依存したくないため、これをさらに自動化する場合は、package.jsonの「scripts」セクションにこれを追加できます。
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
これはハックを超えているように感じますが、「機能する」ようです。このnpmの問題からヒントを得ました:https : //github.com/npm/npm/issues/1558#issuecomment-12444454
postinstall
そしてpostupdate
代わりにpreinstall
そしてpreupdate
?
これは、ローカル依存関係を追加する方法です。
npm install file:src/assets/js/FILE_NAME
NPMからpackage.jsonに追加します。
npm install --save file:src/assets/js/FILE_NAME
このように直接package.jsonに追加します:
....
"angular2-autosize": "1.0.1",
"angular2-text-mask": "8.0.2",
"animate.css": "3.5.2",
"LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....
マスタープロジェクトに使用するpackage.jsonは次のとおりです。
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
そこに./somelocallib
は、マスタープロジェクトpackage.jsonに関連するライブラリフォルダーへの参照があります。。
リファレンス:https : //docs.npmjs.com/files/package.json#local-paths
ライブラリの依存関係を処理します。
を実行npm install
することに加えて、実行する必要があります(cd node_modules/somelocallib && npm install)
。
これはNPMの既知のバグです。
参照:https : //github.com/npm/npm/issues/1341(より最新の参照を求める)
マスターpackage.lock
とチェックインsomelocallib/package.lock
し、ソースコードマネージャーに。
次に、Dockerfileで次を使用します。
FROM node:10
WORKDIR /app
# ...
COPY ./package.json ./package-lock.json ./
COPY somelocallib somelocallib
RUN npm ci
RUN (cd node_modules/zkp-utils/ && npm ci)
# ...
(cd A && B)
操作でべき等にするために、コンストラクトで括弧を使用しています。
私はそれがnpm install ../somelocallib
うまくいくことを知っています。
ただし、質問で示した構文が機能するかどうかはわかりませんpackage.json
...
残念ながら、ドキュメントには依存関係としてURLのみが記載されているようです。
試しfile:///.../...tar.gz
て、zipされたローカルlibをポイントして、動作するかどうかを教えてください。
これは私にとってうまくいきました:最初に、npmディレクトリに適切なユーザーがいることを確認してください
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
次に、package.jsonでディレクトリをリンクします
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
ます。
実際、npm 2.0以降、ローカルパスがサポートされるようになりました(こちらを参照)。
好奇心が強い.....少なくともWindowsでは(私のnpmは3.何か)私がする必要がありました:
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
私がnpm install ../module1 --save
それをしたとき、絶対パスになり、ドキュメントごとの相対パスにはなりませんでした。
私はもう少しいじって、それで../xxx
十分だと判断しました。
具体的には、d:\ build \ module1、d:\ build \ module2などのローカルノードモジュールと、d:\ build \ nodeAppにあるノードプロジェクト(アプリケーション)をチェックアウトしています。
「インストールするには」、私は:
d:\build\module1> rmdir "./node_modules" /q /s && npm install
d:\build\module2> rmdir "./node_modules" /q /s && npm install
d:\build\nodeApp> rmdir "./node_modules" /q /s && npm install
module1のpackage.jsonには「module2」の依存関係があります:「../module2」; module2にはローカル依存関係はありません。nodeAppには、「module1」:「../module1」および「module2」:「../module2」という依存関係があります。
3つのフォルダー(module1、module2、nodeApp)がすべて同じレベルにあるため、これが私だけで機能するかどうかはわかりません。
ローカル開発を完了するための2つのステップ: