問題タブ [npm-link]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 1.2.8 から 1.3.0 への CLI アップグレード後に Angular 5 が壊れる
以前は Angular CLI 1.2.8 で実行されていた Angular 5 アプリがあり、すべてがうまく機能していました。NullInjectorError: No provider for Http!
1.3 へのアップグレード後 (1.5.4 への途中)、 localhost:4200 にアクセスしたときに使用している外部 npm リンク ライブラリに問題があるようです。
HttpModule を shared-lib モジュールに追加すると、エラーはなくなりますが、追加のプロバイダー エラーが発生します。shared-lib モジュールではなく、以前と同じように、shared-lib がメイン アプリのモジュールを使用することを期待しています。この例では、shared-lib には HttpModule に依存する angular サービスがありますが、shard-lib は HttpModule をインポートしません。私が使用しているメイン プロジェクトは、HttpModule をインポートします。
私のtsconfig.json:
私の tsconfig.app.json:
更新:共有ライブラリ node_modules の @angular フォルダーを削除した後、プロジェクトが機能することがわかりました。tsconfig.json 内のオブジェクトのパスが、Angular の使用をプロジェクトの node_modules のみにオーバーライドしない理由がわかりません。
javascript - npm リンクの使用中に Webpack で eslint エラーが発生する
TypeScript ライブラリに依存する JavaScript パッケージが 1 つあるマルチパッケージ プロジェクトをセットアップしました。最初に Sinopia をインストールし、変更を加えるたびにライブラリを再インストールしていました。そしたら開発しやすいなと見npm link
て思ったんです。残念ながら、(を使用してnpm link ../typescript-package
) ライブラリをリンクしてビルドすると、エラーが発生します。
これらは別々のパッケージであるため、Webpack がこのパッケージに eslint を適用しようとしている理由がよくわかりません。これが私のwebpack.common.js
ファイルです(マージを使用し、開発と製品の構成は問題になりません):
必要に応じて、他の構成ファイルまたは package.json ファイルも提供できます。
node.js - babelで「npm link」を処理するには? 予期しないトークン エラーの取得
親レポ(A)で使用npm link
して、子レポ(B)をリンクしています。
通常のnpm link
ように動作しますが、レポ A はコードをトランスパイルするためにバベルを使用しており、node_modules
依存関係またはシンボリック リンクを無視しているようです。
Repo B にスプレッド オペレーターがあり、次のエラーが発生します。
面白いことに、ノード バージョン 9.4.0 を使用しています。これは、これをネイティブにサポートする必要があります。
私package.json
の依存関係:
私の.babelrc
:
npm - ローカル プロジェクトの「npm install」での予期しない動作
シナリオ
- 私は使っている
npm 5.8.0
- 私はとを持ってい
ProjectA
ますProjectB
ProjectB
の依存関係ですProjectA
- 両方のプロジェクトがバンドルされ、Webpack 経由で実行されます (必要に応じて構成を提供できます)。
開発目的で、の package.json を 経由で参照ProjectB
しています。基本的に必要なファイルは、Webpack の出力であるフォルダーにあるだけです。ProjectA
"projectB": "file:../projectB"
lib
問題
上記の構成でこの依存関係をインストールすると、npm は -folder 全体ProjectB
を node_modules にインストールします。すべてprojectB
の node_modules、構成ファイル、src-folder などが含まれます。
これが期待される動作ではないという事実は別として、これはエラーにつながります。たとえば、インストールされた @types の一部は、重複していると見なされるため、エラーをスローします。ProjectA
と からの@types と他のパッケージはProjectB
「衝突」しているようです。これらのパッケージは"dependencies"
、両方ProjectA
とProjectB
ほとんどのように参照されます。
私が試したこと
npm リンク
npm リンクを使用すると、同じ (上記を参照) 動作が表示されます。フォルダ全体がProjectA
の node_modules にインストールされます。
npm パック
私が実際にファイルを持っていることが重要かもしれません. そのため、ファイルを使用すると生成されます。その後、すべてを介してインストールすると、正常に動作します。-file を考慮に入れていると思います。.npmignore
ProjectB
npm pack
projectB.tgz
ProjectB
"projectB": "file:../projectB.tgz"
npm pack
.npmignore
このソリューションに関する私の問題はProjectB
、変更が適用されるたびにビルドする必要があるだけでなく、それもビルドする必要があるnpm pack
ことです。
ProjectB
の node_modulesを削除
これは最もばかげた回避策だと思います。ProjectB
via を再度参照し"projectB": "file:../projectB"
、ビルド後に node_modules を削除すると、インストール後に表示されません。したがって、これ以上例外は発生しません。
ProjectB
-folder全体がまだインストールされているため、これは有効な解決策ではないと思います。
質問
ここでのベストプラクティスは何ですか? ローカルソースからインストールするための合理的なコンスタレーションは何ProjectA
ですか?ProjectB
ProjectB