npmとcnpmを混在させる際の落とし穴の詳細な説明

npmとcnpmを混在させる際の落とし穴の詳細な説明

npm と cnpm を一緒に使用したときに奇妙な問題が発生したことはありませんか? Alipay ミニプログラムの cnpm インストール パッケージが無効であるという状況に遭遇したことはありませんか?本当にリクエスト元を切り替えるだけなのでしょうか?

多くの友人は単純な目的でcnpmを使用していると思います。つまり、ダウンロードを高速化するために、リクエストソースをhttps://registry.npm.taobao.orgに変更します。
そこで、私たちは

npm をインストール -g cnpm --registry=https://registry.npm.taobao.org

次に、npm の代わりに cnpm を使用します。これを行うと、上記の問題が発生しますが、しばらくは発見できない可能性があります。
(また、.npmrc を cnpm 内で実行している状況もあります。この場合、cnpm を使用しても非常に遅くなります。)

原因

npm を使用して何かをインストールしたところ、以前のものすべてに問題があることがわかりました。インストールしたばかりなのに、以前のものをどのように変更できるのかとパニックになりました。それで、この問題を注意深く調べてみたのですが、答えが見つからなかったので、偉い人に尋ねました。

理由

LinGoの返信

cnpm はデフォルトでソフト リンクを使用するため、インストール後に npm が以前の cnpm パッケージを更新し、以前の cnpm インポートが gg になるため、多くのものが gg になります。

すると、原因は cnpm 自体にあることがわかります。これを使用しなければ、問題は解決します。

最も簡単な方法は、npm install <いくつかのパラメータ> --registry=https://registry.npm.taobao.org を使用することです。

これは完璧ですが、非常に面倒でもあります。nrmでアップグレードできます

NPM の紹介:

説明: NPM (Node Package Manager) は、Node プラグインの管理 (インストール、アンインストール、依存関係管理などを含む) に使用される NodeJS のパッケージ マネージャーです。
NPM を使用してプラグインをインストールします。コマンド プロンプトで npm install <name> [-g] [--save-dev] を実行します。
<name>: ノードプラグイン名。
例: npm install gulp-less --save-dev
-g: グローバルにインストールします。 C:\Users\Administrator\AppData\Roaming\npm にインストールされ、システム環境変数に書き込まれます。非グローバル インストール: 現在の場所のディレクトリにインストールされます。グローバル インストールはコマンド ラインのどこからでも呼び出すことができますが、ローカル インストールは、require() によって呼び出され、場所のディレクトリの node_modules フォルダーにインストールされます。
--save: package.json に保存します (package.json は NodeJS プロジェクト構成ファイルです)
-dev;: package.json の devDependencies ノードに保存します。-dev が指定されていない場合は、dependency ノードに保存されます。なぜ package.json に保存するのでしょうか?ノードプラグインのパッケージは比較的大きいため、バージョン管理には含まれません。構成情報は package.json に書き込まれ、バージョン管理に追加されます。他の開発者はそれに応じてダウンロードできます (コマンドプロンプトで npm install を実行し、package.json に従って必要なパッケージをすべてダウンロードします)。

6. npmを使用してプラグインをアンインストールします: npm uninstall <name> [ -g ] [ --save-dev ]

7. npmを使用してプラグインを更新します: npm update <name> [ -g ] [ --save-dev ]

8. すべてのプラグインを更新します: npm update [ --save-dev ]

9. NPMヘルプを表示: NPMヘルプ

10. 現在のディレクトリにインストールされているプラ​​グインを確認します: npm list

CNPM の紹介:

注意:Googleインストールプラグインは海外のサーバーからダウンロードされるため、ネットワークの影響を大きく受け、異常が発生する可能性があります。Googleのサーバーが中国にあったら問題ないので、喜んで共有する私たちのTaobaoチームがこれを行いました。公式サイトから:「これは完全なnpmjs.orgミラーです。公式バージョン(読み取り専用)の代わりにこれを使用できます。同期頻度は現在10分に1回で、公式サービスとの同期を可能な限り確保しています。」
公式サイト: http://npm.taobao.org
インストール: コマンドプロンプトでnpm install cnpm -g --registry=https://registry.npm.taobao.org
実行します。 npm install cnpm -g --registry=https://registry.npm.taobao.org
注: インストール後は、cnpm -v でバージョンを確認するか、コマンド プロンプトを閉じて再度開くことをお勧めします。インストール後に直接使用すると、エラーが発生する可能性があります。注: CNPM は、コマンド実行時に Google が CNPM に置き換えられることを除いて、使用方法は NPM とまったく同じです。

より良い方法

npm インストール -g nrm
nrmはcnpmを使用する

その後、npm を使用して簡単にダウンロードできます。
ナーム

-- 物語はまだ終わらない --

このとき、プロジェクトですでに cnpm が使用されている場合はどうすればよいでしょうか?

方法の改善

cnpm i --by=npm

これで、cnpmとnpmは競合しなくなります。たとえば、cnpm i --by=npm react

理由

cnpm はデフォルトで npminstall を使用します。node_modules のシンボリックリンク モードが気に入らない場合は、インストーラーをオリジナルの npm に変更できます。ただし、最速のインストール速度は失われます。

cnpmポータル

npm と cnpm の混在の落とし穴に関する記事はこれで終わりです。npm と cnpm の混在についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • npm と cnpm のインストール手順を実装する Windows
  • cnpm が内部コマンドにならない場合の解決策: 環境変数を構成する [推奨]
  • node npm cnpmの具体的な使い方を簡単に理解する
  • npm cnpm npx nvm を区別する方法
  • Mac に nodejs、npm、cnpm をインストールするチュートリアル

<<:  MySQL の自己結合重複排除に関する注意事項

>>:  nginx と keepalived を組み合わせて高可用性を実現するための手順を完了する

推薦する

Linux システムに Spring Boot アプリケーションをインストールするための詳細なチュートリアル

Unix/Linux サービスsystemd サービス操作プロセス1. JDKがインストールされたC...

jsはショッピングサイトの虫眼鏡機能を実現します

この記事では、ショッピングサイトの虫眼鏡機能を実現するためのjsの具体的なコードを紹介します。具体的...

Redmine の Docker インストール手順

イメージをダウンロードします(オプションの手順です。省略した場合は、手順 3 と 4 で自動的にイン...

JS は複数のタブを切り替えるカルーセルを実装します

カルーセルアニメーションは、ページの外観とインタラクティブなパフォーマンスを向上させることができます...

OneProxy に基づいて MySQL の読み取り/書き込み分離と負荷分散を実装する

導入パート1: 冒頭に書いたOneProxy は、民間ソフトウェアによって完全に独立して開発された分...

HTML 初心者のためのベストプラクティス 15 選

HTML 初心者向けのベストプラクティスを 30 個紹介します。 1. タグを閉じたままにする過去に...

さまざまなSQL結合を簡単に学ぶ

SQL JOIN 句は、テーブル間の共通フィールドに基づいて 2 つ以上のテーブルの行を結合するため...

Firefox ブラウザでバックグラウンド ミュージックを再生するための究極のソリューション (Chrome マルチブラウザ対応)

FirefoxでBGMを再生するための推奨コードがテストに合格しました空のコントロールパネルを開いて...

MySQLの日付と時刻関数の使用の概要

この記事はMySQL 8.0に基づいていますこの記事では、日付と時刻の操作のための MySQL 関数...

フレックスレイアウトは、1行あたりの固定行数と適応レイアウトを実現します。

この記事では、1行あたりの固定行数+アダプティブレイアウトを実現するフレックスレイアウトを紹介し、皆...

WeChatミニプログラム公式顔認証の詳しい説明

ミニプログラムはユーザーの個人情報を収集してアップロードしましたが、拒否されました。こんにちは、ミニ...

スタイルをより標準化するための CSS の書き方に関する 5 つのヒント

1. CSSをアルファベット順に並べるアルファベット順ではありません:コードをコピーコードは次のとお...

Linuxファイルを表示するコマンドの詳細な説明

Linuxファイルを表示する方法ファイルの内容を表示するコマンド: catは最初の行からコンテンツを...

DELL R730 サーバーの構成 RAID とインストール サーバー システムとドメイン制御の詳細なグラフィック チュートリアル

最近、会社で DELL R730 サーバーを購入したのですが、偶然次のチュートリアルを見つけたので、...

ヘッダーのチェックボックスをテキスト実装コードに変更するための選択テーブルを持つ要素

方法1: テーブル属性を使用する: header-cell-class-name テーブルインターフ...