npmについて備忘録
経緯として、railsのbundleとかもそうだけど色々と触っていてよく分からんことがあったので。
今回はJavaScript触ってて出てきたことをまとめてみる。
まぁ、ぶっちゃけ分からんことだらけなので...
npm
npmとはNode.jsのパッケージを管理するもの。Node Package Managerの略。
- インストールされているライブラリのパッケージの記録
- 新しいパッケージのインストールや削除
こんな感じの便利機能がまとめられたもの。
パッケージ間に依存関係がある場合には、インストールしたパッケージに必要となるパッケージまで自動的にインストールしてくれる。
% npm
と打てばターミナルに使い方が表示される。詳細な使い方については
% npm -l
と打つ。
また、npmでインストールされたものの詳細を確認するには
% npm -g ls
と打つ。これでインストールされているパッケージの依存関係を表すツリーが表示される。
-g というのはグローバルにインストールされたものを指す。
npmにはグローバルインストールとローカルインストールの2つのインストール方法が用意されている。
グローバルインストール
Node.jsの実行環境自体にパッケージをインストール
% npm install -g パッケージ名 例 % npm install -g nodegrind
のように -g をつける。
ローカルインストール
現在のディレクトリでインストール。ローカルインストールされた時に、node_modulesディレクトリがパッケージとなってインストールされるディレクトリ。
CUIで対象となるディレクトリ上に移動して
% npm install パッケージ名 例) % npm install request
などのように入力すると
request@2.87.0 node_modules/request
インストールのメッセージが表示される。
間違ってインストールしてしまったものがあった場合はアンインストール
npm uninstall パッケージ名 例) npm uninstall sum
npmのパッケージは自作することも可能。initというコマンドを使う
cd greet npm init
実行するとチュートリアルが起動し、 package.json というnpm のパッケージ情報を書き込む流れになる。
name: (greet)
でパッケージ名。このままでよければreturnキーを押し、greetとする。version: (1.0.0)
でバージョンを決める。そのままでよければ同上。description:
で説明文を付けられる。入力は任意。enter point: (hello.js)
ライブラリを読み込んだ際に最初に実行するJavaScriptファイル(エントリポイントという)を設定する。test command:
テストコマンドの設定。なしでよいならそのままreturnキーを押す。
node test.js
などと入力しておき、動作確認のための test.js ファイルを作成してテスト用のコードを書くことで、実際のslack環境でなくてもコンソール上でテストできる。
この時、実際にテストをする際の呼び出しは% node test
のように記述する。
Railsでいうところのrspec-railsやcapybaraみたいなイメージ。keywords:
登録時の検索キーワードの設定。なしなら同上。author:
ライブラリの著者の設定。なしなら同上。license: (ISC)
ライブラリのライセンス設定をする。そのまま決定するとISCライセンスとなる。ISCライセンスは使用、コピー、改変、配布する許可を与えるライセンス。UNLICENSED、MITなど種類がいくつかあるみたい。
必要事項を入力し終わったらIs this ok ? (yes)
と聞かれるのでreturnを押すと今回であればgreedディレクトリの中にpackage.jsonファイルが生成される。
このファイル自体に直接書き込むことも可能で、一番下に"private": true
などのように追加すれば、公開も防ぐように設定することができる。
npm initする時に呼び出されるファイル自体をカスタマイズすることもできるみたい。
参考にさせていただいた記事 npm initでauthorやlicenseなどの初期値を指定する
greet/hello.jsを編集する。
自作したnpmはローカルのフォルダを指定してインストールすることも可能。
ディレクトリ構造例) projects ┬ conversation ┗ greetnpm install ../greet
自分のためのパッケージ作れるのって後々便利になりそう。
したらな❗️ 👋