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

推薦する

ウェブタイポグラフィにおける致命的な意味的ミス 10 選

<br />これは、Steven D が書いた Web フロントエンド開発デザインの基本...

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

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

CSS BEM 記述標準の詳細な説明

BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...

MySQLでSELECT文が実行される仕組み

目次1. マクロの観点からMySQLを分析する2. SQL ステートメントを実行するには、どの程度の...

よくある Linux 英語エラーの中国語翻訳 (初心者必見)

1.コマンドが見つかりません コマンドが見つかりません2. そのようなファイルまたはディレクトリは...

JavaScript バブルソートの例

目次1. バブルソートとは何か2. 例を挙げるラウンド1:第2ラウンド:第3ラウンド:第4ラウンド:...

CSSの使用に関する深い理解 clear:both

clear:both清除浮動これは私が常に持っていた印象ですが、私はこれをめったに使用せず、私の理...

MySQLのUPDATE文の落とし穴を記録する

背景最近、オンライン操作中に DML ステートメントを実行しました。これは絶対確実だと思っていました...

Docker環境を構築する簡単な方法

まず、Docker とは何かを理解しましょう。 Docker は、アプリケーションをデプロイするため...

node.jsのインストールとHbuilderXの設定の詳細な説明

npm インストールチュートリアル: 1. Node.jsインストールパッケージをダウンロードする公...

Tomcat は親の委任メカニズムを破壊して Web アプリケーションの分離を実現します。

目次Tomcat クラスローダー階層WebAppクラスローダー共有クラスローダーカタリナクラスローダ...

Nginx シグナル制御

Nginx の紹介Nginx は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

いくつかの面接の質問を使ってJavaScriptの実行メカニズムを調べる

目次前の単語同期と非同期前菜プレートを追加マクロタスク マイクロタスク約束しましょうタイマーを追加す...

MySql バージョンの問題に対する完璧なソリューション sql_mode=only_full_group_by

1. sql_modeを確認する @@sql_mode を選択照会された値は次のとおりです。 ON...