Parcelで使われてるnpmパッケージ調べてた
Contents
- dependencies
- babel-core
- babel-generator
- babel-plugin-transform-es2015-modules-commonjs
- babel-to-estree
- babylon
- babylon-walk
- browser-resolve
- chalk
- chokidar
- commander
- cssnano
- glob
- htmlnano
- is-url
- js-yaml
- micromatch
- mkdirp
- node-libs-browser
- parse-json
- physical-cpu-count
- postcss
- postcss-value-parser
- posthtml
- resolve
- serve-static
- uglify-js
- v8-compile-cache
- worker-farm
- ws
- devDependencies
- babel-cli
- babel-preset-env
- cross-env
- husky
- less
- lint-staged
- mocha
- ncp
- nib
- node-sass
- nyc
- postcss-modules
- posthtml-include
- prettier
- rimraf
- stylus
- typescript
- おわりに
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
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 が参考になりそうなのでよかったけど、全部書く必要はなかった。。。 😫