NPM

Last updated 2 months ago

npmの面白い事実は 略語ではない ということです。しかし、友人の間では、一般的にnode package managerと呼ばれています。

npmはデフォルトのnodeのインストールに付属するバイナリで、コミュニティに公開されたJavaScript/TypeScriptのパッケージを管理するためのものです。

  • NPMパッケージは https://www.npmjs.com/ (the ☁️) にホストされて(そしてそこからインストールされて)います

簡単な共通セットアップ

  • npmパッケージはpackage.jsonを使って設定されます。あなたはそれを素早くnpm init -yで生成することができます。

  • パッケージは./node_modulesフォルダにインストールされます。あなたは通常それを.gitignoreに入れています。

あなたがアプリケーションを作っているとしても、本質的には、package.jsonはあなたのプロジェクトを同じようにパッケージにするものです。なので、project | packageの用語は交換可能です。

あなたが他の誰かの(あなたのチームの)パッケージをチェックアウトしたら、package.jsonがあります。それはあなたがプロジェクトを実行するために必要な依存関係のリストです。

パッケージのインストール

npm install <something>を使ってインストールできます。ほとんどの人はショートハンドnpm i <something>を使います。例:

// Install react
npm i react

これは自動的にreactpackage.jsonの依存関係に追加します。

devDependencyのインストール

devDependenciesは、開発(development)中のみプロジェクトに必要で、デプロイ後は必要ない場合の依存関係です。

typescript.ts -> .jsのビルド時だけ必要なものなので、普通はdevDependenciesです。あなたは通常ビルドされた.jsファイルをデプロイします:

  • 本番環境上に

  • または、他の誰かのnpm packageに使ってもらうために

セキュリティ

公開されたnpmパッケージは世界中のセキュリティチームによってスキャンされ、問題があればnpmチームに報告されます。そして、彼らはセキュリティアドバイスを公開し、問題の詳細や、可能な修正をリリースします。一般的に修正はシンプルにパッケージをアップデートすることです。

あなたはnpm auditを実行し、プロジェクトを監査することができます。これはパッケージやパッケージの依存関係に存在するかもしれない脆弱性をハイライトしてくれます。例:

┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Regular Expression Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ debug │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ jest [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ jest > jest-cli > istanbul-lib-source-maps > debug │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/534 │
└───────────────┴──────────────────────────────────────────────────────────────┘

一般的に問題はdevelopmentの依存関係に見つかることに注意してください(例えば、このケースではjestです)。これらは本番デプロイの一部ではないので、あなたのアプリケーションはたいてい脆弱ではありません。しかし、良いプラクティスは、脆弱性を0に保つことです。

単に`npm audit`(このコマンドはエラーがあれば、エラーコード1で終了します)をあなたのデプロイの一部に追加し、あなたのプロジェクトが最新状態であることを確実にしてください。

NPM Scripts

スクリプトの--は何か

あなたはベースのスクリプトを限られたコマンドライン引数のセットで作ることができます。例えば、これはTypeScriptコンパイラのためにtscを走らせるスクリプトターゲットです。

{
"scripts": {
"build": "tsc -p ."
}
}

あなたはtsc -p . -wを実行するためにbuild:watchターゲットを作るか、npmにbuildを実行するよう追加のフラグ-wを付けて指示することができます:

{
"scripts": {
"build": "tsc -p .",
"build:watch": "npm run build -- -w"
}
}

あなたは必要なフラグを--の後ろに渡すことができます。例えば、下記の例では、build:moresomething --foo -f -d --barと同じ効果を持ちます。

{
"scripts": {
"build": "something --foo",
"build:more": "npm run build -- -f -d --bar"
}
}

Public vs. Private packages

公開された一般的なnpmパッケージを何か1つでも使っている場合は、これは必要ありません。ただ、enterprise/commercial cusomers向けがあることを知ってください。

Public packages

  • パッケージはデフォルトでPublicです

  • だれでもパッケージをnpmにデプロイできます

  • 無料で取得できるアカウントだけが必要です

publicパッケージをダウンロードするには、アカウントは必要ありません。

これは無料でシェアするパッケージであり、npmが成功した理由の一つです🌹

Private packages

もしあなたの会社/チームのためにprivateパッケージを必要とする場合は、有料プランにサインアップする必要があります。詳細はこちらです:https://www.npmjs.com/pricing

もちろんprivateパッケージをダウンロードするには、適切な権限のあるアカウントが必要です。