プログラミングや電子工作などについての記事がほとんどです

人気npmパッケージ25本をサクッと紹介する

0 件のコメント

こちらはNode.js Advent Calendar 2017 - Qiitaの20日目の記事です。

今回はnpm rankの2017/12/12のデータを元に、もっとも権威のある(検索でヒットしやすい)パッケージTOP25を超簡潔に紹介していきます。

node.jsには便利なパッケージがたくさんあり、ほとんどのことはパッケージで効率化できます。しかしパッケージを使うには、どういうパッケージがあるか知らなければサッと使うことができません。とはいえ1つずつググっていくと意外と多くの時間がかかってしまう。そのために頭のなかに索引をつくるような記事を書いてみようと思いました。苦労して調べるのは一人でいい!
私自身ほとんどパッケージを知らないので、サーベイの意味を込めて。

説明の誤りや改善点があればコメントください〜。

Node.js超入門
Node.js超入門
posted with amazlet at 17.12.21
掌田津耶乃
秀和システム
売り上げランキング: 17,840

1. lodash

JavaScriptでで関数型プログラミングをするのに使えるモダンユーティリティライブラリ。配列や数値、オブジェクト、文字列の扱いを簡単にする。関数型プログラミングでおなじみの合成関数も利用できます。あと速い。

参考

Lodash
JavaScriptで関数型プログラミングの入門

2. request

httpコールをシンプルに作成するためのライブラリ。とりえずWeb API叩いてみたいときはこれ使っとけばいい感じ。

参考

request - GitHub
Node.jsのrequestモジュールを使ってHTTPSでPOSTリクエストを行う - Qiita

3. chalk

ターミナルに表示する文字列のスタイルを指定するのを簡単にする。ログの出力を簡潔な表記で色付けしたりボールド体にできる。メソッドチェーンを使って1文でハイコンテキストなスタイリングが可能。

参考

chalk - GitHub

4. async

非同期処理をシンプルなAPIで記述できる。また並列処理と逐次処理を同じインターフェースで記述できる。

参考

async
Node.js asyncの有効な使い方 - エンジニアとして生きる

5. express

高速、オープン、軽量なNode.jsのためのWebフレームワーク。
JavaScriptでデファクトスタンダードのMVCフレームワークです。
REST APIの実装とかチャチャッとしたいとき便利。

参考

express

6. commander

CLIツールを作るためのフレームワーク。
簡単にバージョン指定できたり、オプションが指定できたり。

参考

commander - GitHub
NodeでCLIツール作成時にCommander.jsを使うと便利だった話 - Qiita

7. bluebird

Promiseを実現するためのモジュール。
ちなみにPromiseは非同期処理をベースにした並列処理の実装です。コールバック地獄からの解放。

参考

bluebird
今更だけどPromise入門 - Qiita
PromiseとQとBluebird - Qiita

8. debug

Node.jsとWebブラウザで動作する軽量デバッグユーティリティ。デバッグのときのみログ出力したいときに有効。デバッグログ用にconsole.log()を使ってしまうと、実働コードでコメントアウトor削除する手間が生じる。debugモジュールを使えばDEBUG環境変数をいじるだけでログのON/OFFが可能。

参考

debug - GitHub
Express のデバッグ
debug パッケージの使い方 - Qiita

9. fs-extra

Node.jsにデフォルトで存在するfsモジュールには含まれないファイルシステム関連メソッドを追加するモジュール。fsモジュールにない、mkdirp,rimraf,ncpなどを個別にインポートする手間が省ける。promiseに対応させることも可能 。fsモジュールをインポートする代わりにfs-extraモジュールをインポートすればfsの機能も使えるのが大変使い勝手が良い。

参考

jprichardson/node-fs-extra: Node.js: extra methods for the fs object like copy(), remove(), mkdirs()
node.jsで階層ディレクトリ作成やコピーをしたいときは? - Qiita

10. moment

時間のデータを扱うための軽量ライブラリ。パースしたり検証したり操作したりフォーマットを整えたりできる。

参考

Moment.js
Moment.jsを使う - Qiita

11. mkdirp

シェルのコマンドmkdir -p 相当のことが出来る関数を使えるようになる。デフォルトのモジュールではできないところを解決するシンプルなモジュール。

参考

mkdirp - GitHub

12. body-parser

httpリクエストのbodyをパースするためのミドルウェアという位置づけのモジュール。マルチBodyな構造には対応していない。

参考

body-parser - GitHub

13. react

FacebookのUIライブラリであるReactをサクッと使うためのモジュール。Reactを使用したモジュールをbrowserify(モジュールの依存関係を解決し、1つのjsファイルに)するときに特に有用。

参考

React - A JavaScript library for building user interfaces
react - npm

14. glob

ワイルドカードを使ってファイル名を特定するモジュール。パターンに合うファイルを探すときに使う。拡張子がjsのファイル名が知りたい時とか。

参考

glob - GitHub
【npm】 globとはなんなのか - コンパイラかく語りき

15. underscore

配列やオブジェクトの操作をシンプルに書くための関数などの便利関数がパッケージ化されているモジュール。map, reduceなどの関数型プログラミングもサポートしている。

参考

Underscore.js
第1回 Underscore.jsとは:Underscore.jsの入り口|gihyo.jp … 技術評論社
Underscore.jsの全メソッドを表にまとめてみた - あと味

16. babel-core

ES2015やJSXなどのモダンなJS仕様でコーディングされたものをブラウザでも動作するように生のJSに変換するトランスパイラ(コンパイラ)。

参考

Babel
Babelを使おう - Qiita

17. colors

node.jsコンソールに表示する文字列のスタイルを指定するのを簡単にする。3番目に紹介したchalkと類似のモジュール。chalkと比較するとstringにメソッドを生やすなど影響範囲が大きいらしい。

参考

colors.js - GitHub
良く使うnpmパッケージの紹介 - Qiita

18. webpack

複数のモジュールを1つにまとめてファイルを出力するモジュールバンドラ。類似のモジュールにはBrowserifyがあるが、Webpackがユニークな点は、css、画像、Webフォントなどのアセットをモジュールとして扱って1つのバンドルにして出力する点。

参考

webpack
webpack - GitHub
webpack 入門 (v3系 対応) - Qiita
フロントエンドエンジニア必見!JavaScript開発現場で人気の「Webpack」とは?

19. react-dom

元々Reactで提供されていたDOMのルートノード作成機能を分離提供したもの。reactreact-domはReactを使うのに最低限必要。

参考

react-dom
React - A JavaScript library for building user interfaces

20. babel-loader

webpackのモジュールローダとしてbabelを使うために必要。簡単に言うとローダーは入力したファイルをバンドル(一個にまとめる)ときに生JSにコンパイルしてくれる。TypeScriptやES2015などのモダンJavaScriptだけでなくcssや画像のローダが存在する。

参考

babel/babel-loader - GitHub
モジュール管理、だけじゃない-Webpack入門 〜 JSおくのほそ道 #029 - Qiita

実践Node.js プログラミング (Programmer's SELECTION)
Mike Cantelon Marc Harter T.J. Holowaychuk Nathan Rajlich
翔泳社
売り上げランキング: 189,232

21. yargs

CLIツールを作成する際に引数のパースやユーザインターフェースの作成のための機能を提供するモジュール。6番目に紹介したcommanderに近い。

参考

yargs
yargsを使ってタスク自動化ツールのコマンドにオプションを指定する - dskd

22. babel-runtime

babel-polyfillを使うのに必要らしい。
あんまり深い情報を得られなかったので良い解説求む。

参考

babel/packages/babel-runtime - GitHub
babel-polyfillとbabel-runtimeの使い分けに迷ったので調べた - Qiita
フロントエンドでもES6構文使ってみる【webpack+babel-loader(旧6to5-loader)】 - yutaponのブログ

23. q

Promiseを扱うためのライブラリ。Promiseは関数の返却値と例外を定義するオブジェクト。7番目に紹介したbluebirdと類似。

参考

kriskowal/q - GitHub
PromiseとQとBluebird - Qiita

24. css-loader

webpackであらゆるファイルをJS一本化する際、CSSをJavaScriptに変換するのに必要なモジュール。これはsass やlessなどのメタCSS言語をコンパイルするのではなく、プレーンなCSSをJavaScriptで読み込めるようにする機能を持つ。

参考

webpack-contrib/css-loader - GitHub
なんとなくで理解しないWebpackのCSS周辺 - Qiita
webpackのcss-loaderでCSS Modulesをやる - Qiita

25. inquirer

その名の通り、コマンドライン上でユーザに問いかけるのに使うモジュール。
質問を投げかけたり、入力された内容をパースしたり、入力された内容を検証したり、階層構造を持つ質問を管理したり。

参考

SBoudrias/Inquirer.js - GitHub

あとがき

これ書いてて痛感したんですが、モジュールのREADMEに「Why ◯◯?」みたいにそのモジュールの価値を簡潔に書いてくれてるのはすごくありがたい。

最近よく使われている技術をさらっと俯瞰することは勉強になりますね。私はjQueryでなんでもやっちゃおうという世代なので、モダンJS特有知らない概念を吸収できた点が有益でした。これからモダンJS使えるようになりたい。

あと、人気モジュールを追うことで今のデファクトスタンダードが自ずと見えてくる。ライブラリ導入の判断材料として役立ちそう。

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-
松島 浩道
SBクリエイティブ
売り上げランキング: 256,064

0 件のコメント :

コメントを投稿