npmのBuild/パッケージ管理等々

npmとは

パッケージ管理システムの一種。Node Package Manage

npm install

npm installは、npmリポジトリからライブラリ(正確にはパッケージと呼びます)をダウンロードしてくるコマンドです。 ライブラリそのものは下記のサイトから取得されます。

#npm install
npm run

npm runでビルドが実施される。

#npm run buildProd
npm トラブルシュート
  1. gyp ERR! stack Error: unable to get local issuer certificate のエラーが出た場合

  2. proxy設定をする。

  3. NODE_TLS_REJECT_UNAUTHORIZED=0 の設定をする。

#export NODE_TLS_REJECT_UNAUTHORIZED=0
  • Dockerfile に以下の設定を追加する。
RUN npm -g config set http-proxy http://proxyname:8080

RUN npm -g config set https-proxy http://proxyname:8080

RUN npm -g config set strict-ssl  false

RUN npm -g config set proxy  http://proxyname:8080

RUN npm -g config set registry  http://registry.npmjs.org
  1. npmでpermission deniedになった時の対処法

  2. npmディレクトリのパスを確認する npm config get prefixを実行するとおそらく/usr/localが表示される npmディレクトリのオーナーを自分のアカウントに変更する

    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
  1. npm install でgit repository に接続できないとき。

 以下のようなエラーが出ており、npm installに失敗する。

npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://git@github.com/eligrey/FileSaver.js.git
npm ERR! 
npm ERR! ssh: connect to host github.com port 22: No route to host
npm ERR! fatal: Could not read from remote repository.

解決策 npmのpackage.jsonで、sshプロトコルで、gitにアクセスするように指定している可能性がある。

package-lock.json:        "file-saver": "git+ssh://git@github.com/eligrey/FileSaver.js.git#e865e37af9f9947ddcced76b549e27dc45c1cb2e",

これを以下のようにhttpsプロトコルに修正すれば、アクセスできるようになる。

package-lock.json:        "file-saver": "https://git@github.com/eligrey/FileSaver.js.git#e865e37af9f9947ddcced76b549e27dc45c1cb2e",
npm list (パッケージの依存性確認)

npmで管理しているパッケージをリスト形式で出力 パッケージの依存関係やバージョンを調べるのに便利です。

#npm list

├─┬ @agm/core@1.1.0
│ └── tslib@1.14.1
├─┬ @angular-devkit/architect@0.1303.7
│ ├─┬ @angular-devkit/core@13.3.7
│ │ ├─┬ ajv@8.9.0
│ │ │ ├── fast-deep-equal@3.1.3
│ │ │ ├── json-schema-traverse@1.0.0
│ │ │ ├── require-from-string@2.0.2
│ │ │ └─┬ uri-js@4.4.1
│ │ │   └── punycode@2.1.1 deduped
│ │ ├─┬ ajv-formats@2.1.1
│ │ │ └── ajv@8.9.0 deduped
│ │ ├── fast-json-stable-stringify@2.1.0
│ │ ├─┬ magic-string@0.25.7
│ │ │ └── sourcemap-codec@1.4.8 deduped
│ │ ├── UNMET PEER DEPENDENCY rxjs@6.6.7 deduped
│ │ └── source-map@0.7.3
│ └── UNMET PEER DEPENDENCY rxjs@6.6.7 deduped
├─┬ @angular-devkit/build-angular@13.3.7
│ ├─┬ @ampproject/remapping@2.2.0
│ │ ├─┬ @jridgewell/gen-mapping@0.1.1
│ │ │ ├── @jridgewell/set-array@1.1.1

npm outdated (最新のパッケージの確認)

現在インストールされているパッケージが最新であるかを確認するコマンドです。

$ npm outdated
Package                                  Current         Wanted        Latest  Location
@agm/core                                  1.1.0          1.1.0  3.0.0-beta.0  nec-edge-ui
@angular-devkit/architect               0.1303.7       0.1303.9      0.1401.0  nec-edge-ui
@angular-devkit/build-angular             13.3.7         13.3.9        14.1.0  nec-edge-ui

npm audit (脆弱性の確認)

現在確認されているパッケージの脆弱性を報告します。

$ npm audit

┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High          │ Regular expression denial of service in scss-tokenizer       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ scss-tokenizer                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ No patch available                                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ node-sass [dev]                                              │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ node-sass > sass-graph > scss-tokenizer                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://github.com/advisories/GHSA-7mwh-4pqv-wmr8            │
└───────────────┴──────────────────────────────────────────────────────────────┘