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 を組み合わせて高可用性を実現するための手順を完了する

推薦する

Nginx の起動に失敗した場合のいくつかのエラー処理の詳細な説明

Nginx を Web サーバーとして使用する際に、次の問題が発生しました。 1. nginxの起動...

nginxとバックエンドポート間の競合の解決策

質問: Alice 管理システムを開発しているときに、すべてのバックエンド インターフェイスが最初の...

Vue でよく使われる命令 v-if と v-show の違いを簡単に分析します。

目次序文1.v-ショー2.v-if 3. v-showとv-ifの違い1. 原則の違い2. アプリケ...

Linux マルチスレッドにおけるフォークとミューテックス ロック プロセスの例

目次質問: 1. 最初の試み2. 合理的な分析3. 問題解決(1) pthread_join()の使...

史上最も簡単な MySQL データのバックアップと復元のチュートリアル (パート 2) (パート 37)

データのバックアップと復元パート3の詳細は次のとおりです基本的な概念:バックアップ、現在のデータまた...

ZabbixはPSK共有キーを使用してサーバーとエージェント間の通信を暗号化します。

Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbi...

DockerにRabbitMQをインストールする詳細な手順

目次1. 鏡を見つける2. RabbitMQイメージをダウンロードする3. RabbitMQコンテナ...

圧縮パッケージを使用して Linux 環境に JDK 13 をインストールする方法

JDK とは何ですか?まあ、この質問がわからないのであれば、なぜこれをインストールするのか本当にわか...

Docker で Python スクリプトを実行する方法

まず、Docker イメージ用の特定のプロジェクト ディレクトリを作成します。例: mkdir /h...

Vue で echarts を使用してコンポーネントを視覚化する方法

echarts コンポーネントの公式ウェブサイト アドレス: https://echarts.apa...

Docker での Redis 接続の急増をトラブルシューティングした実践的な記録

土曜日、本番サーバー上の Redis サーバーが利用できなくなり、エラー メッセージは次のようになり...

CentOS 7 環境でソースコードから MySQL 5.7 をインストールする方法

この記事では、CentOS 7 環境でソース コードから MySQL 5.7 をインストールする方法...

jsオブジェクト指向カプセル化カスケードドロップダウンメニューリストの実装手順

この例で開発されたカスケード ドロップダウン メニューは、既存の JSON データに基づいて作成され...

Linux システムのユーザー管理コマンドの概要

ユーザーとグループの管理1. ユーザーとグループの基本概念ユーザーとグループ:システム上のすべてのプ...

ftp は SSH 経由で Linux にリモート接続します

まず Linux に ssh をインストールします。例として Centos を使用します。ポータル:...