Parcelが依存しているnpmパッケージを調べてみた。なんとなくこういう用途にこういうパッケージ使うのかーという程度。
新しく作るアプリに今話題のParcelを使ってみようとしたけどHot module replacementが効かず、Fedoraを使っているのでinotifyに対応してないのでは?ってところから依存パッケージを調べてみた。
HMRが効かない原因は何もわかってない。Nodeには標準でクロスプラットフォームなfs.watch
1なるものがあるのでそれはなさそう。
きっかけはそんな感じで、流行りのイケてるパッケージはどういう用途でどういうパッケージを使うのかってのを知っておこうと思ったので一通りみてみた。
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
babylon
Babelのパーサ。Babel(Babylon) ASTを吐く。
babylon-walk
Babylon ASTを歩くやつ。
browser-resolve
Sadly, this package has no readme. Go write one!
Oops!
package.json
のbrowser
フィールドを解決するやつ?具体的にどう動くのかはよくわかってない。
chalk
コンソールの出力に色つけたりするやつ。
const chalk = require('chalk');
console.log(chalk.blue('Hello world!'));
chokidar
fs.watch
、fs.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が参考になりそうなのでよかったけど、全部書く必要はなかった。。。 😫