Node.jsのモジュールを使おうとWebで検索すると大抵のページでよく「npm init
を実行する」と書いてある。
しかしいろいろ聞かれてめんどくさい。ただclasp
とかtsc
とかを使いたいだけなのに…
※Enterキーを押し続ければいいだけなのは分かった上で。
ということでnpm init
を実行しないでできないか試してみた。
TL;DR
echo {"private":true}> package.json
ただし、Windowsのコマンドプロンプト上で。Linux/MacOSなら
echo '{"private":true}' > package.json
作成したモジュールを公開するつもりがないなら
npm init
を実行しなくてもこれだけで十分(多分)。
何もしない
まずはnpm init
の実行も何もしないで、いきなりnpm install
してみる。
> npm install typescript
npm WARN saveError ENOENT: no such file or directory, open '~\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '~\package.json'
npm WARN ~ No description
npm WARN ~ No repository field.
npm WARN ~ No README data
npm WARN ~ No license field.
+ typescript@3.6.4
added 1 package from 1 contributor and audited 1 package in 0.619s
found 0 vulnerabilities
当然のことながらpackage.json
がないのでエラーが出ている(警告扱いになっているけど)ものの
インストール自体は成功したようだ。
しかし、このままだとほかのモジュールをインストールしたときに、また同じ警告が出ることになる。
結論: ボツ
空のpackage.json
次に、空のpackage.json
を作成してからnpm install
してみる。
> echo;> package.json
> npm install typescript
npm ERR! code EJSONPARSE
npm ERR! file ~\package.json
npm ERR! JSON.parse Failed to parse json
npm ERR! JSON.parse Unexpected end of JSON input while parsing near ''
npm ERR! JSON.parse Failed to parse package.json data.
npm ERR! JSON.parse package.json must be actual JSON, not just JavaScript.
npm ERR! A complete log of this run can be found in:
npm ERR! ~-debug.log
空っぽだとJSONのシンタックス的におかしいのでエラーが出ている。
このためエラーという扱いでインストールにも失敗している。
結論: ボツ
空のオブジェクトのpackage.json
JSONのシンタックス的にOKな状態にすれば良いのかということで{}
にしてみる。
> echo {}> package.json
> npm install typescript
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN ~ No description
npm WARN ~ No repository field.
npm WARN ~ No license field.
+ typescript@3.6.4
added 1 package from 1 contributor and audited 1 package in 0.662s
found 0 vulnerabilities
package.json
がないときにも出ていた警告がいくつか出てる。
指定するべきフィールドが不足しているようだ。
description
説明を文字列で記述します。
npm search で表示されるので、人々があなたの作ったパッケージを見つけ、理解するのに役立ちます。
-
repositry
ソースコードが管理されている場所を指定します。ソースコードに関与したい人々に とってそれは助けとなるでしょう。
もし github 上の git リポジトリであれば npm docs コマンドでそのパッケージが発見可能になります。 -
license
パッケージユーザーが使用許諾とあなたの指定している禁止事項を知る為にパッケージのライセンス情報を指定します。
やはり、このままだとほかのモジュールをインストールしたときに、また同じ警告が出ることになる。
結論: ボツ
"private": true
を指定する
警告が出ているフィールドはどれもパッケージを公開するつもりがなければ必要がない。
ということでprivate
にtrue
を指定してみる。
private
"private": true を package.json に設定しておくと、publish コマンドを拒否します。
…あまり警告が出なくなることについての説明になってなかった。
description
ほかはpublishコマンドによってパッケージを公開する際に必要になるフィールドなので
その他のコマンドでもこれらのフィールドについてのチェックがスキップされるらしい。
> echo {"private":true}> package.json
> npm install typescript
npm notice created a lockfile as package-lock.json. You should commit this file.
+ typescript@3.6.4
added 1 package from 1 contributor and audited 1 package in 0.642s
found 0 vulnerabilities
警告が出なくなった。
モジュールをnpmで公開するつもりがなければ、これで十分なんじゃないだろうか?
というわけでこれを採用!!