しがないエンジニアのブログ

技術的な内容をメモ代わりにつらつら

Node.jsとかnpmについての基礎的な部分

Node.jsとは

Node.jsとは、サーバサイド用のjavascript

シングルスレッドとか、ノンブロッキングI/Oとか、細かいところは省く(というかそこまで理解してない)

じゃあクライアントサイド用のjavascriptは?といえば、それが今まで使ってきていたjsなのだろう(多分)
サーバサイドで使えるようになったからそういう風に言われているのでは

npmとは

Node Package Managerの略
Node.jsのパッケージ管理ツール

gulpとかbrowserifyとか色々ある

Node.jsの機能の利用は、基本的にnpmを通して使うことが多い

npmの使い方

  • $ npm init
      package.jsonを作成    

       ※ package.jsonとは
        そのディレクトリ内の環境についての設定ファイル
        プロジェクト名や、実行可能コマンド、依存パッケージなどの情報が入っている    

  • $ npm install
      package.jsonが存在する場合、その構成に従ったパッケージのインストールを行う

  • $ npm install -g <package_name>
      グローバル環境にパッケージをインストール
      インストールしたパッケージ(コマンド)を、どこからでも利用可能になる
      ※ よほど汎用的なものでない限り非推奨
      僕がnpm installに-gをつけないわけ

  • $ npm install --save/--save-dev/--save-optional <package_name>
      ローカル(現在のパスの下)にパッケージをインストール
      node_modulesというフォルダが作成される
      そしてpackage.jsonにパッケージ情報が追加される
      一緒にpackage-lock.jsonも追加される   

      ※ package-lock.jsonとは
       node_modulesやpackage.jsonが変更されたときに自動生成される
       パッケージのバージョンログなどが含まれている
       開発者間のパッケージバージョンの同一性を担保する
       npm5から導入された package-lock.jsonについて - kakts-log   

  引数によって、package.jsonの以下3種類のどこかに割り当てられる
   ・ dependencies
   ・ devDependencies
   ・ optinonalDependencies
  なにも書かない場合はdependencies
  勉強メモ/npmの使い方(node.js=v0.11.16, npm=2.3.0, 2015-03時点)

   ・ dependencies
     他の人が共有する際にインストールされる場所
     npm installでdependencies下のパッケージがインストールされる
   ・ devDependencies
     開発者専用のパッケージ群
   ・ optinonalDependencies
     npm installでインストールされるが、失敗しても無視される(らしい)

  インストールしたものはjsファイルで利用することができるようになる
  例えば、npm install hogeとした場合、

const hoge = require('hoge')

  として利用できる

  • $npm uninstall/rm -g <package_name>
      グローバルのパッケージのアンインストール

  • $ npm uninstall/rm <package_name>
      ローカルのパッケージのアンインストール

  • $ npm update -g <package_name>
      グローバルのパッケージのアップデート

  • $ npm update <package_name>
      ローカルのパッケージのアップデート

package.jsonのscript設定

package.jsonには、scriptタグがある
ここに色々追加することで、コマンド上でパッケージを実行することが可能となる
デフォルトでは、以下のようになっている

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
}

このとき、npm run test --silentを実行することで

Error: no test specified

が表示される(--silentをつけたのはエラーログを出さないため)
npm run testするときはnpmログを切ったほうがいい

このscriptタグ内を設定して自由にコマンドを追加できる
また、startコマンドは特殊なコマンドとして登録されており、npm startで実行できるようになっている

package.jsonの詳しい中身について:package.jsonの中身を理解する


参考サイト