Skip to the content.

npm

文法

インストール

# 基本インストール
npm install パッケージ名
npm install パッケージ名 --verbose # 冗長オプション

# 応用インストール
npm i パッケージ名           # 省略形
npm ci                    # clean-install package-lock.jsonは更新されない(package-lock.jsonを元にインストール)
npm install               # package.jsonに書かれているパッケージをインストール、package-lock.jsonは更新することがある
npm install --production  # dependenciesに書かれているパッケージのみインストール
# インストール先ディレクトリを指定
npm install --prefix 対象パス package.jsonのパス # 対象パス配下にnode_modulersディレクトリができてパッケージがインストールされる

# バージョン指定インストール
npm install パッケージ名@バージョン名
npm install パッケージ名@^5.0.0 # メジャーバージョンは固定してマイナーバージョン以下は最新でインストール

# ローカル環境にインストール
npm i --save-dev パッケージ名   # devDependenciesに追加したいとき
npm i -D パッケージ名           # 省略形
npm install --save パッケージ名 # dependenciesに追加したいとき
npm i -P パッケージ名           # 省略形

# グローバル環境にインストール
npm i -g パッケージ名  # 省略形

確認

# json形式で表示
npm list --json

# 依存関係の深さを指定して表示
npm list --depth 0
npm list --depth=1

# 環境を指定して表示(npmの古いバージョンでのみ対応)
npm ls -dev  # devDependenciesのみ
npm ls -prod # dependenciesのみ

# どのバージョンがあるか調べる
npm info パッケージ名 versions
npm view パッケージ名 versions --json

# バージョンを絞り込み
npm info パッケージ名@0.1 version
# 最新バージョンを表示
npm info パッケージ名 version

# 古い依存関係を表示
npm outdated
npm outdated --long # 追加項目表示

# 依存しているパッケージの重複を整理
npm dedupe

# キャッシュクリア
npm cache clean 
npm cache clean --force

# 脆弱性監査
npm audit

# package.jsonに記載されていないパッケージをnode_modulesから削除する
npm prune

# npmのアップデート
npm update -g npm

package.json

"dependencies": {
  "a": "3.2.1",
  "b": "^3.2.1", // 3.x.x  メジャーバージョンを更新しない。マイナーバージョンとパッチバージョンは更新する
  "c": "~3.2.0", // 3.2.x  明記したところ以下のバージョンがあがることのみ許容。左記はメジャーバージョンとマイナーバージョンを固定する
  "d": "*"       // x.x.x
}
"dependencies": {
    "@aws-cdk/assert": "^1.9.0",   # aws-cdkというユーザーネームのassertというモジュール名という意味
    "aws-cdk": "^1.16.0"
}
  "engines": {        # nodeの推奨バージョンを指定
    "node": "^18.0.0"
  },
npm init
# name, versionを埋めるのが必須項目

package-lock.json

環境変数

{
  "config": {
    "xxx": "Yeah!"
  },
  "scripts": {
    "var": "echo $npm_package_config_xxx"
  }
}

# npm run var  Yeah! と出力される

よく使うライブラリ

パッケージ検索は公式サイトでするのがおすすめ

npm install -g npm-which
npx npm-which ターゲット

package.jsonの依存関係を最新バージョンに更新。指定されたバージョン範囲を無視して最新のバージョンをインストールする場合に便利

npm install -g npm-check-updates

# package.jsonがあるディレクトリで実行する
ncu                # アップデート可能なパッケージを表示
ncu -u             # package.jsonをアップデートする
ncu --target minor # メジャーバージョンは更新せず、マイナーバージョン以下で更新可能調査
ncu --dep dev      # devDependenciesのみ指定

リンター

eslintの設定

# インストール
npm install -D eslint

# eslintrcの作成
npx eslint --init

# eslintの実行
npx eslint --ext ts(対象の拡張子) .(パスの指定)
npx eslint 対象ファイル --fix-dry-run
npx eslint 対象ファイル --fix
# 実行時のカレントディレクトリを起点にして、上位のディレクトリの設定ファイル (.eslintrc.*) を探していく。
root: true # trueの指定があると、この検索の振る舞いをそこで停止できる。
env: # 実行環境の指示
# どのようなグローバルオブジェクトを宣言なしで参照可能にするかを ESLint に知らせるための設定。
# 例えば、Web ブラウザ上で動作させる JavaScript コードであれば browser
# Node.js 環境で動作させるコードであれば node を true に設定します
# 内部的には、選択した環境ごとに globals オプションの設定が行われる
  commonjs: true
  es2021: true
  node: true
plugins: # 使用するプラグインの指定
# pluginsはあらかじめnpmでインストールした上で、ここに列挙しておく必要がある。さらに、実際にルールを有効化するには、extends なども指定する必要がある。
  - '@typescript-eslint'
overrides: []
parser: [] # TypeScript コード (.ts、.tsx) を扱えるようにするには、TypeScript 用のパーサー (@typescript-eslint/parser) をインストールして指定する必要がある
  - @typescript-eslint/parser
parserOptions:
  ecmaVersion: 2021 # 12と同様、常に最新を指定するlatestと指定することも可能
extends: # 共有設定の適用
# 複数のルールをまとめたコンフィギュレーション名をする。
# ESLint標準のもの(eslint:recommeded など)以外は、npmパッケージをインストールすることで指定できるようになる。
# 内部のルール設定が重複する場合は、後から指定したものが優先されることに注意。
# 例えば、plugin:@typescript-eslint/recommended は eslint:recommended より後に指定する必要がある(TypeScript 用の設定で上書きする必要があるため)。
  - eslint:recommended 
  - plugin:@typescript-eslint/recommended
rules: # 各ルールの設定
# 多くのケースでは、extends による共有設定で大まかなルール設定を行い、ここで個別ルールを細かく調整する。
  indent: ["error", 2]
  semi: ["error", "always"]
  no-console: warn
  complexity: ["warn", { max: 10 }] // 関数の複雑度が(if,switch,for,whileなどをどの程度関数内で使っているか)10以上で警告
import js from "@eslint/js";
import tseslint from "typescript-eslint";

export default [
  {
    ignores: [
      "src/**/__tests__/**",
    ],
  },
  js.configs.recommended,
  ...tseslint.configs.recommended,
  {
    files: ["src/**/*.ts"],
    languageOptions: {
      sourceType: "module",
      parser: tseslint.parser,
    },
    plugins: {
      "@typescript-eslint": tseslint.plugin,
    },
    rules: {
      complexity: ["warn", { max: 10 }],
    },
  },
];

prettierの設定

# インストール
npm install -D prettier eslint-config-prettier

# eslintと重複しないようにeslintrcに以下の行を加える
extends: [
+   'prettier',
  ]

# prettierの実行
prettier -c './**/*.{js,jsx,ts,tsx,json,css,scss}' # フォーマットされているかチェック
prettier -l --ignore-path .gitignore './**/*.{js,jsx,ts,tsx,json,css,scss}' # フォーマットされるファイルを表示する
prettier --write --ignore-path .gitignore './**/*.{js,jsx,ts,tsx,json,css,scss}' # フォーマットする

husky

gitのcommitやpushといったアクションのタイミングで、コマンドを実行する仕組みを提供するライブラリ

npm install -D husky
npx husky install #最初だけ実行 gitフックを有効にする
npx husky add .husky/pre-commit "実行したいスクリプト"