教えていただいているメンターさんのオンライン講義があったので、そちらのメモ
package.json
ライブラリを管理するためのファイルです。
ターミナルに
$ npm init
と打ち込むことでファイルを作成することができます。
scripts
package.json
内に記述されてあるscripts
の中でショートカットを設定することができます
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"タスク名":"コマンド"
},
:
の左にショートカットに使いたいタスク名、右に実行したいコマンドを記述します
$ npm run {タスク名}
で実行することができます
※ タスク名にtest
、start
と設定した場合はrun
を省略することができます
ライブラリのインストール方法
ライブラリをインストールする際には、package.json
内のどこのプロパティに記述するかも設定する必要があります
-
dependencies
…webサービスを動かすために必要なライブラリを記述するところ(Express
,Vue
など) -
devDependencies
…webサービスを動かすためでなく、開発時に使用するライブラリを記述するところ(mocha
,power-assert
など)
// dependenciesへインストール
$ npm install {ライブラリ名}
// devDependenciesへインストール
$ npm install -D {ライブラリ名}
※ Node.jsの古いバージョンではinstall
の後に --save
という記述も必要でしたが、現在は必要ないみたいです。
node_modulesと.gitignore
ライブラリをインストールすると、node_modules
というディレクトリができ、そこにライブラリが保存されます。
このnode_modules
ですが、package.json
にインストールしたライブラリの情報がある場合は、node_modules
を削除しても
$ npm install
とコマンドを打てば全てインストールしてくれます。なのでGitHubなどでコードを共有する場合もnode_modules
をプッシュする必要はありません。
node_modules
はライブラリをインストールするたびにデータ量が多くなります、なので全てpushするとgit clone
した際の負担も大きくなりますし、また、プルリクエスト時に全てpushした場合、全てのファイルがプルリクで出てしまうのでコードレビューもしにくくなります。
なのでnode_modules
はpushするものから除外しておくのが基本ですが、その際に使用するのが.gitignore
というファイルです。
.gitignore
は、管理に含めないファイル、ディレクトリを設定するファイルです。
node_modules
を除外したい場合は
node_modules/
と記述します。
※ gitignore.io というwebサービスを使うと、簡単に除外したいファイル等を設定することができます
gitignore.ioのススメ - Qiita
package-lock.json
バージョンを固定するためのファイルです、git clone
したものをnpm install
したさいに、もしライブラリのバージョンが変わっていたら大変です。
何故なら、開発時のバージョンでは動いていたコードが、最新版になると記述の方法が変わっていたりなどして、動かない可能性があるからです。
そういったことが起きないためにpackage-lock.json
でインストールするバージョンを固定する必要があります。
基本的にライブラリをインストールした際に自動で生成されるので、無理に気にする必要はないです。
^(キャレット)
package.json
に記述されてあるライブラリのバージョンを見ると、数字の左に^
という記号がついています
{
"dependencies": {
"hoge": "^1.1.1", // >=1.1.1 and <2.0.0
"huga": "^0.1.1", // >=0.1.1 and <0.2.0
"foo": "^0.0.1" // >=0.0.1 and <0.0.2
}
}
この記号は キャレットと呼ばれるもので、これがあると、一番左の0
になっているところの数字以外の部分のバージョンアップはされないようになります