npm でパッケージをインストールせずに package.json の dependencies を更新する方法
はじめに
実際にパッケージをインストールすることなく、package.json
に良い感じで依存関係を追加する方法が無いか調べた。
※AWS Lambda の開発で docker-lambda
に渡す package.json
を手で書きたくなかった。
参考: docker-lambda を使って AWS Lambda Function を開発する方法
TL;DR
- npm-add-dependencies を使えば OK
- 標準コマンドでは対応不可
npm install -g npm-add-dependencies
でインストールnpm-add-dependencies <package>
でpackage.json
に追記
目次
環境・条件
1 | $ sw_vers |
詳細
node.js - How to npm install to only save dependency to package.json? - Stack Overflow によると、公式コマンドとしては存在しない(古いバージョンだといけた?)が、それ専用のパッケージがある。
Last Commit などから npm-add-dependencies - npm を採用。
インストール
1 | $ npm install npm-add-dependencies -g |
使い方
1 | $ npm-add-dependencies <dependencies> [target] [--no-overwrite] |
複数インストールしたい場合はスペース区切りで記述。
1 | $ npm-add-dependencies axios vue ... |
target
オプションで、記述先を変更できる。
- 指定なし:
"dependencies"
--dev
:"devDependencies"
--peer
:"peerDependencies"
--bundled
:"bundledDependencies"
--optional
:"optionalDependencies"
--no-overwrite
は、すでに package.json
に記述済みのものを上書きしないためのオプション。
実行例
1パッケージ
1パッケージのみで npm-add-dependencies
を実行。
1 | $ npm-add-dependencies axios |
diff を確認、dependencies
に axios
が追記されている。
1 | "test": "echo \"Error: no test specified\" && exit 1" |
当然だがインストールしていないため、node_modules
は存在しない。
1 | $ ls node_modules |
複数パッケージ
複数パッケージでも、同じように dependencies
に追記される。
1 | $ npm-add-dependencies vue react |
1 | "test": "echo \"Error: no test specified\" && exit 1" |
target 指定
開発環境向けに --dev
を指定。
1 | $ npm-add-dependencies --dev bulma |
"devDependencies"
に追記される。
1 | "test": "echo \"Error: no test specified\" && exit 1" |
その他の指定種別は 使い方 を参照。
–no-overwrite 指定
--no-overwrite
を指定することで、package.json
に記載済みのパッケージの上書き(= バージョン変更)を防ぐことができる。
1 | { |
上記のような package.json
がある状況で、npm-add-dependencies bulma
とすると bulma
は上書きされてしまう。
1 | $ npm-add-dependencies axios bulma |
1 | { |
--no-overwrite
を付けることで、bulma
の上書きを防ぐことができる。
1 | $ npm-add-dependencies axios bulma --no-overwrite |
1 | { |
バージョン指定
npm install axios@0.18.0
のように npm-add-dependencies axios@0.18.0
とすると、うまく動かない。
1 | $ npm-add-dependencies axios@0.18.0 |
1 | { |
Issue 作って、PR 送ったので、Merge されれば指定可能になる。
まとめ
- npm-add-dependencies を使えば OK
npm install -g npm-add-dependencies
でインストールnpm-add-dependencies <package>
でpackage.json
に追記
参考文献
- node.js - How to npm install to only save dependency to package.json? - Stack Overflow
- npm-add-dependencies - npm
- npm-add - npm
- adddep - npm
関連記事
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)
- axios で unable to verify the first certificate の対応方法
- Git で package-lock.json がコンフリクトした時の解決方法
- Vue.js で FontAwesome を使う方法
- Node.js でミリ秒より高解像度の時刻情報取得や計測を行う方法
- Node.js で firebase-admin を使ってサーバからプッシュ通知
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア