2020/08/18

[js]npm install -gしていいのはツール類だけ?

前回、TypeScriptでprocessを使うのに@types/nodeをインストールしたけど-gを付けていたのでダメだった、という話をした。

そういえば・・・nodeのライブラリ検索は常に"node_modules"というディレクトリ名で、それをカレントからルートまで順にたどっていくというやり方だったと思う。

ならば、ツールのように実行するものは-gでインストールして動くが、ライブラリは-gだとダメなんじゃなかろうか?

 

いや・・・しかし importも requireもないのに検索するのだろうか?

コンパイルして生成したファイルには、node.d.tsのような記載はない。というか、ほとんどtsファイルと同じだ。
package.jsonの"dependencies"に"@types/node"が追加されたので見に行っているのかと思ったが、外しても動作した。

ということは、Node.jsか?
でも、Node.jsが処理するなら declareは使えないんじゃないだろうか。
あれ、そういえば declareは TypeScript専用なのだろうか? Mozilla.orgでは出てこなかったのだが。もし TypeScriptの予約語なら Node.jsでは解釈できないと思うのだ。

しかし、 node_modules/@types/node には tsファイルしかない。まあ、拡張子が tsでも Node.jsは気にしないだろうが、TypeScriptにしかないキーワードが出てくれば処理できないだろう。
それに、node_modules/@types/node/process.tsをリネームしてみたが、関係なくコンパイルも実行もできた。node_modules を削除しても実行できるので、 process.exit()を tscするときに使うのだな。


関係ないけど、インストールするときに"--save-dev"と書いてあるのが気になった。
どういう意味なのか?

common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--no-save] [--dry-run]

他にもsaveのオプションがあるのか。

* `-P, --save-prod`: Package will appear in your `dependencies`. This is the
                     default unless `-D` or `-O` are present.

* `-D, --save-dev`: Package will appear in your `devDependencies`.

* `-O, --save-optional`: Package will appear in your `optionalDependencies`.

何も付けない場合は "--save-prod" と同じ扱いで "dependencies"に追加される。

製品版と開発版とか、そういうのをきっちり分けるときに使い分けるのだろうか?
ここら辺はそのうち調べよう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。