面倒なので`npm init`を実行しない

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`してみる。

```text
> 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`してみる。

```text
> 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な状態にすれば良いのかということで`{}`にしてみる。

```text
> 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`がないときにも出ていた警告がいくつか出てる。
指定するべきフィールドが不足しているようだ。

[npm package.json 取扱説明書](http://liberty-technology.biz/PublicItems/npm/package.json.html)より

> - `description`  
説明を文字列で記述します。  
npm search で表示されるので、人々があなたの作ったパッケージを見つけ、理解するのに役立ちます。 
- `repositry`  
ソースコードが管理されている場所を指定します。ソースコードに関与したい人々に とってそれは助けとなるでしょう。  
もし github 上の git リポジトリであれば npm docs コマンドでそのパッケージが発見可能になります。 
- `license`  
パッケージユーザーが使用許諾とあなたの指定している禁止事項を知る為にパッケージのライセンス情報を指定します。  

やはり、このままだとほかのモジュールをインストールしたときに、また同じ警告が出ることになる。

結論: ボツ

## `"private": true`を指定する

警告が出ているフィールドはどれもパッケージを公開するつもりがなければ必要がない。
ということで`private`に`true`を指定してみる。

[npm package.json 取扱説明書](http://liberty-technology.biz/PublicItems/npm/package.json.html)より

> - `private`  
"private": true を package.json に設定しておくと、publish コマンドを拒否します。 

…あまり警告が出なくなることについての説明になってなかった。

`description`ほかはpublishコマンドによってパッケージを公開する際に必要になるフィールドなので
その他のコマンドでもこれらのフィールドについてのチェックがスキップされるらしい。

```text
> 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で公開するつもりがなければ、これで十分なんじゃないだろうか?

というわけでこれを採用!!