33
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

npm init しないとどうなる?

Last updated at Posted at 2020-10-17

はじめに

package.json がないときに npm init せずに、いきなり npm install したらどうなるのか気になったので、以下の2通りで試してみました。

1. npm init せずに npm install した場合
2. npm init せずに npm install <package> した場合

結論

結論から先にいうと npm init しなくても npm install に失敗するわけでもないし、引数にパッケージを指定すれば node_modules が作成されてパッケージのインストールにも成功しました。

なので、エラーになるということはありませんし、パッケージも普通にインストールされます。

一見、問題ないように思いますが、package.json が作成されないため、どのパッケージをインストールしたかの記述がどこにも記されす、node_modules の内容を管理するのは難しくなります。

一方で、package-lock.json は作成されますが、package-lock.json にはインストールしたパッケージの結果のみが記されて、パッケージの依存関係まではわからないので、やはり package.json はソースを管理する上で必要になります。

なので、package.json がなければ npm install する前に npm init で package.json を作成すべきでしょう。

実際にやってみた

動作環境

# Node.js のバージョン確認
$ node -v
v14.13.1

# npm のバージョン確認
$ npm -v
6.14.8

1. npm init せずに npm install した場合

# 何もない空のディレクトリ
$ ls
(標準出力なし)

# npm install の実行
$ npm install

# package-lock.json のみが作成される(package.json は作成されない)
$ ls
package-lock.json

# 中身は lockfileVersion のみの記述でパッケージ情報はありませんでした(当たり前)
$ cat package-lock.json 
{
  "lockfileVersion": 1
}

2. npm init せずに npm install <package> した場合

# 何もない空のディレクトリ
$ ls
(標準出力なし)

# cowsay パッケージをインストール
$ npm install cowsay
+ cowsay@1.4.0

# package-lock.json と node_modules が作成されるが package.json がない
$ ls
node_modules
package-lock.json

さいごに

package.json がなければ npm install する前に npm init で package.json を作成すべきです。

33
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?