Parcelが依存しているnpmパッケージを調べてみた。なんとなくこういう用途にこういうパッケージ使うのかーという程度。

新しく作るアプリに今話題のParcelを使ってみようとしたけどHot module replacementが効かず、Fedoraを使っているのでinotifyに対応してないのでは?ってところから依存パッケージを調べてみた。

HMRが効かない原因は何もわかってない。Nodeには標準でクロスプラットフォームなfs.watch1なるものがあるのでそれはなさそう。

きっかけはそんな感じで、流行りのイケてるパッケージはどういう用途でどういうパッケージを使うのかってのを知っておこうと思ったので一通りみてみた。

dependencies

babel-core

Babelのコア。元コードから生成されたコード、ソースマップ、ASTを生成したりする。こいつの提供する関数にオプションとしてpluginとかpresetとかを渡す。

var res = babel.transform(code, options)
res.code;
res.map;
res.ast;

Babelまわりはバージョン7でパッケージ名が変わるっぽい。例えばbabel-coreなら@babel/coreになる。今は@babel/coreを使うと7.0.0-beta.34が手に入る。
ほかも例えばbabel-preset-reactが@babel/preset-reactになったりする。

A monorepo, muhahahahahaha. See the monorepo design doc for reasoning.

https://github.com/babel/babel/tree/master/packages

正直またこんなでっかい変更が…という思いしかないが主要パッケージのバージョンを統一してくれるのは良い。

babel-generator

ASTからコードを生成するやつ。ソースマップもでる。

babel-plugin-transform-es2015-modules-commonjs

Babelのプラグイン。ES ModulesをCommonJS形式に変換するやつ。

babel-to-estree

Babel ASTESTreeに変換するやつ。

babylon

Babelのパーサ。Babel(Babylon) ASTを吐く。

babylon-walk

Babylon ASTを歩くやつ。

browser-resolve

Sadly, this package has no readme. Go write one!

Oops!

package.jsonbrowserフィールドを解決するやつ?具体的にどう動くのかはよくわかってない。

chalk

コンソールの出力に色つけたりするやつ。

const chalk = require('chalk');
console.log(chalk.blue('Hello world!'));

chokidar

fs.watchfs.watchFile、fseventsのラッパー。環境差異を吸収するやつらしい。

commander

RubyのcommanderにインスパイアされたCLIツールを作るやつ。

cssnano

MinifyするPostCSSのプラグイン。

glob

Fileをglobするやつ。

htmlnano

cssnanoにインスパイアされたHTMLをminifyするPostHTMLのプラグイン。

is-url

文字列がURLかどうか調べるやつ。

js-yaml

YAML扱うやつ。

micromatch

globマッチャ。

console.log(micromatch(['foo', 'bar', 'qux'], ['f*', 'b*'])); 
//=> ['foo', 'bar']

mkdirp

mkdir -p

node-libs-browser

Nodeの機能をブラウザで再現するためのパッケージ群。

parse-json

親切なエラーメッセージを出すJSONパーサ。

physical-cpu-count

物理CPUコアをカウントするやつ。

postcss

PostCSS

postcss-value-parser

CSSの値のパーサ。

posthtml

PostHTML

resolve

Nodeのrequire.resolve()の実装?require.resolve()requireのパスを解決するやつっぽい。

serve-static

静的ファイルをserveするミドルウェアを作るやつ。ミドルウェアってのはNodeのhttpとかExpressとかで使えるものを指してるらしい。

uglify-js

minifyするやつと思ってたけど、その逆とかパースとかもできるらしい。

v8-compile-cache

コンパイル後のコードをキャッシュしとくやつ?立ち上がりのスピードが早くなるっぽい。

worker-farm

子プロセスを立ち上げてコードを実行するタイプのワーカー。

ws

WebSocketのクライアントとサーバ。

devDependencies

babel-cli

BabelのCLIツール。

babel-preset-env

Babelのプリセット。対象のブラウザ・ランタイムにあわせて自動でBabelのプラグインとPolyfillを決定する。

cross-env

クロスプラットフォームで動作する環境変数を設定してスクリプトを実行するCLIツール。

husky

Git hookとしてnpm scriptsを実行するように自動で設定するツール。npm install huskyすると.git/hooks以下に自動でスクリプトが作成される。

less

CSSプリプロセッサ。

lint-staged

Gitのステージのファイルに対してLintを実行するツール。

mocha

simple, flexible, funなJavaScriptテストフレームワーク。

ncp

高機能なcp -rみたいなやつ。

nib

StylusにMix-inとか様々な機能を追加するやつ。

node-sass

CSSプリプロセッサ。

nyc

IstanbulのCLIツール?nyc経由でテストを実行するとカバレッジがとれる。

postcss-modules

CSS Modulesを扱うためのPostCSSのプラグイン。

posthtml-include

includeタグが使えるようになるPostHTMLのプラグイン。

<html>
<head>
    <title>index.html</title>
</head>
<body>
    <include src="component/button/button.html"></include>
</body>
</html>

prettier

コードフォーマッタ。

rimraf

rm -rf

stylus

CSSプリプロセッサ。

typescript

TypeScript。

おわりに

Babelのエコシステムがどんな感じなのかしれたのと、devDependenciesが参考になりそうなのでよかったけど、全部書く必要はなかった。。。 :tired_face: