windowsシステムの下でnpmアップグレードの正しい姿勢と原理

5913 ワード

本文は網易雲コミュニティから来ます.
作者:陈観喜
インターネット上ではnpmのアップグレードについて様々な方法がありますが、windowsシステムでは、どの方法も正しくアップグレードされます.その中でwindowsシステムの下で主なアップグレード方法は以下の3つがあります.
  • まず暴力的な方法でnodejsとnpmを削除して、公式サイトでDownloadの最新のmsiを削除して、msiのインストールはあなたのnodeとnpmを更新します.
  • は次にnpm install-g npmを利用します.この方法はネット上で多くの人が使う方法ですが、この方法は潜在的な問題があります.以下に紹介します.
  • 最後にnpm-windows-up gradeを利用してアップグレードします.How can I udate npm on Windowsを参照してください.管理者権限でPowerShellを開いて、次のコマンドを実行します.
    Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Forcenpm install -g npm-windows-upgradenpm-windows-upgrade
    では、第3の方法が推奨されています.これもnpmチームの公式推奨の使い方です.
    準備工作
  • windowsの下のアナログ端末:powershellを使用することを推奨します.本人が試したgit bashとミニティ端末シミュレータはnpm命令を実行する時問題があります.この二つの端末が実行する原理に興味があります.
  • 3つの方法の比較
    1.nodejsをアップグレードしてアップグレードする
    この方法はnodejsとnpmを削除して最新のnodeをダウンロードしてインストールすればいいです.npmを削除する場合は、NODEJSディレクトリのnpmフォルダとAPPDATAのRomingディレクトリの下のフォルダのnpm、npm-cacheフォルダをきれいに削除する必要があります.
    (NODEJSディレクトリとは、あなたがnodejsをインストールしたディレクトリのことです.デフォルトはC:\Program Filesodejs、APPDATAのRomingディレクトリとは、C:\Users\Appdata\Roming、本人のAPPDATAディレクトリはC:\Users\chenguxi\Appdata\Romingを指します.APdowsは常に別のアプリケーションのユーザーディレクトリに設定されています.APPDATAディレクトリの用途はWhat Is the ApData Folder in Windowsを参照しますか?
    2.npm install-g npm方法(ポイント紹介)
    この方法を実行する前に、まず私の今のnodeとnpmバージョンを見てください.
    $ node -v
    v8.11.3$ npm -v5.6.0
    次にnpm install-g npmを実行すると、以下の結果が得られる.
    $ npm -v 
    6.4.1
    アップグレードが成功したようです.ちょっと見てみます.本当ですか?nodejsディレクトリのnpmアップグレードが成功しました.
    NODEJSディレクトリで対応するnpmディレクトリ(C:\Program Filesodejsodem)のpackage.jsonファイルを開きます.
    まだ5.6.0
    APPDATA経路のnpmディレクトリ(C:\Users\chenguxi\Appdata\Romingpm)を開くと、ここで新たにnpmが追加されたことが分かります.そのpackage.jsonファイルを開くと、次のようになります.
    端末の下でnpm-vを実行すると、APPDATAディレクトリnpmのバージョン結果が得られます.npmコマンドを実行するときは、どのnpmを実行しますか?
    上の図から得られた結果は、どの経路のnpmを実行しても同じです.もう一歩深くして、まずNODEJSディレクトリのnpmがどのように実行されているか見てみます.npm.cmdファイルを開けて、このファイルが何を実行しているかを確認してください.
    npm命令実行原理:
    npm.cmdファイルにロゴを入れて関連変数を見ます.
    npm-vを実行して得られた結果:
    '~dp0: ' C:\Program Files
    odejs\'NODE_EXE: ' C:\Program Files
    odejs\
    ode.exe'NPM_CLI_JS: ' C:\Program Files
    odejs\
    ode_modules
    pm\bin
    pm-cli.js'NPM_PREFIX_NPM_CLI_JS: ' C:\Users\chenguanxi\AppData\Roaming
    pm
    ode_modules
    pm\bin
    pm-cli.js'NPM_CLI_JS: ' C:\Users\chenguanxi\AppData\Roaming
    pm
    ode_modules
    pm\bin
    pm-cli.js'npm command ===:' C:\Program Files
    odejs\
    ode.exe C:\Users\chenguanxi\AppData\Roaming
    pm
    ode_modules
    pm\bin
    pm-cli.js6.4.1
    重要な注釈(具体的な命令はwindowsバッチ処理(cmd/bat)のプログラミング詳細を参照):
  • %~dp 0はバッチファイルにしか使えません.バッチファイルのディレクトリ位置によって決められています.バッチファイルがあるディスクです.+パス、
  • は、npm-cli-jsファイルをバッチファイル処理のディレクトリに対応するnpm-cli.jsファイルのキーを設定します.「%NODE uEXE%」「% NPMuCLI JS%」prefix-gというコマンドを実行します.つまり、npm prefix-gというコマンドです.次にNPM_を設定しますPREFIX_NPM_CLI_JSという変数は、NPM_があればPREFIX_NPM_CLI_JSは、npm-cli.jsをNPM_に設定します.PREFIX_NPM_CLI_JSディレクトリのnpm-cli.jsファイル
  • 最後にnode.exe{対応する}ode_を実行します.modulespm\binpm-cli.js
  • npm prefix-gこのコマンドは、以下の結果を得ました.C:\Users\chenguxi\アプリData\Romingpmの具体的なコマンドの実行過程は、prefixの構成を読み取って構成の結果を出力します.
  • オープンC:\Program Filesodejsode_modulespmディレクトリのnpmrcファイルには、1行のみのコードprefix={APPDATA}pm
  • が表示されます.
  • ドル{APPDATA}は、node環境下のプロcess.env.APPDATA変数
  • を意味します.
  • 結果は、C:\Users\chenguxi\Appdata\Roming
  • です.
    まとめ:
    npmコマンドを実行すると、実際にnode${対応}/npm-cli.jsというコマンドが実行されます.鍵はどのnpm-cli.jsファイルですか?
  • 全体の実行プロセスは、どのnpm-cli.jsファイルを実行するかを判断することである.つまり、グローバルprefixが存在する場合は、グローバルprefixでnpm-cli.jsファイル
  • を実行する.
  • つまりnpmコマンドを実行するということは、実行です.modulespm\binpm-cli.js
  • 以上のように、npmコマンドは、nodejsディレクトリのnpmコマンドを実行します.npmがどのように実行されているかを確認した後、npm install-g npmというコマンドを実行しているかを知ることができます.実はグローバル環境のnpmパッケージをダウンロードしてインストールし、prefixという設定でグローバル環境下のnpm-cli.jsファイルにリンクしています.このプロセスはNODEJSディレクトリのnpmバージョンを変更することはありません.したがって、潜在的な問題は、prefix構成が修正された後、npmが実行する環境は未知であり、このようなグローバルnpmパケットにリンクされたプロキシ方式によってnpmをアップグレードすることは推奨されない.
    3.npmアップグレードの正しい姿勢はnpm公式のオススメの方法であるべきです.
    How can I udate npm on Windowsを参照してください.
    管理者権限でPowerShellを開き、次のコマンドを実行します.
    Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Forcenpm install -g npm-windows-upgradenpm-windows-upgrade
    npm-windows-up gradeの実行過程:
    1.  ensureExecutionPolicy:     powershell        2.  ensureInternet:         3.  chooseVersion:        npm  4.  choosePath:      npm    5.  upgrade:       npm     ,            ,    npm install -g npm
    詳しい過程に興味があるのはソースファイルを開けてみてもいいです.主に以下の三つのファイルです.
  • C:\sers\chengudxi\アプリData\Romingpmpm-windows-uplaye.cmd
  • C:\sers\chenguxi\アプリData\Romingpmode_modulespm-windows-up grade\binpm-windows-up grade.js
  • C:\sers\chenguxi\アプリData\Romingpmode_modulespm-windows-up grade\lib\up grader.js
  • つまりnpm-windows-up gradeを実行すると、npmをアップグレードしている正しいディレクトリを自動的に見つけて、既存の構成を保護して再適用して、最終的にnpm install-g npmを呼び出します.
    締め括りをつける
    以上のように、windowsシステムの下でnpmをアップグレードする一番いい方法はnpm-windows-up gradeを使ってアップグレードします.このように保護し、既存の配置に再適用できます.潜在的な問題を避けられます.以上の実験過程を通して、以下の知識点のまとめがあります.
  • npmコマンドは、node npm-cli.jsコマンドにより実現される
  • です.
  • windowsシステムでは、npmのグローバルパッケージ管理環境とnodeディレクトリは別の
  • です.
    以上に間違いがあります.ご指摘をお願いします.
    参考:
  • How can I udate npm on Windows?
  • What does%~dp 0 mean,and how does it work?
  • What Is the ApData Folder in Windows?
  • npm wiki:Trouble shoting
  • windowsバッチ処理(cmd/bat)プログラミング詳細
  • 網易雲無料体験館、0コストで20種類の雲商品を体験します.
    より多くの網易の研究開発、製品、運営経験を共有し、網易雲コミュニティを訪問してください.
    地図投影の学问について话します.マイクロサービス监视の探索