npmの「parcel-bundler」はv2にかけて「parcel」に移行する流れ
Zero configuration でおなじみ、みんな大好き Parcel だが、npm i
するパッケージを覚えていらっしゃるだろうか?parcel
だっけ?parcel-bundler
だったかも?チュートリアルの Installation を見ると npm install -g parcel-bundler
となっている。と思いきや、次期バージョンである Parcel v2 のドキュメンテーション では npm install -D parcel@next
。
基本的に、Parcel v1 では parcel-bundler
、v2 では parcel
と案内されていて、v1 は parcel
でも入れられるが v2 は parcel-bundler
では公開されていない。こんなことになっている理由は、昔は別のパッケージが parcel
の名前を使ってた から。
要約: Parcel v2 は parcel-bundler
ではなく parcel
で公開される。v1 も parcel
からインストールできる。
npm を掘る
parcel
で version をご覧いただこう。一番下に 0.0.1
というバージョンが 8 years ago に公開されている。Brwoserify→webpack→Parcel という流れで生まれた Parcel が 8 年も前に存在していたはずがない。これはバンドラの Parcel とは別のパッケージ。curl -O https://registry.npmjs.org/parcel/-/parcel-0.0.1.tgz
でファイルを引っ張ってきて tar xf parcel-0.0.1.tgz --directory=0.0.1
で解凍し、中の package/package.json
を見ると、description には「Package management using a file server and path conventions.」と。明らかにわれわれの知ってる Parcel じゃないですね。
で、version の 1 個上が 3 年前の 0.1.0
。そしてその次でいきなり 1.8.0
。ここで 0.1.0
を同じように落として解凍して package.json
を見ると description には「DO NOT INSTALL
」の文字が踊っている。preInstall
のスクリプトには echo \"You are looking for 'parcel-bundler'\" && exit 1
が仕込まれており、インストールさせまいという固い意思がみえる。author が sheetjs になってるのが気になる。
そしてご想像どおり 1.8.0
は Zero configuration で blazing fast なモジュールバンドラの Parcel。パッケージが移管されてるってことみたい。
GitHub を掘る
GitHub にそのへんの話が出てないか Issue を探ってみたら「どっち使えばいいんだ」という質問が 2 個見つかった。
Twitter で探る
GitHub で移管の詳しい経緯がなくてもやもやが止まらないので Twitter にて parcel
の URL を検索してみたら答えが 1 発で見つかる。
1 つ目のツイートのリプライによれば、bundler のほうを公開する前に parcel
を譲ってはくれまいか的なことをかけあったらしいが、当時は OK してもらえなかったそう。どうやら parcel
はこのツイートの後に移管されたようだ。さすがに npm の仲裁が入ったとかはわからなかったが、まあ Twitter 上でそんな会話する必要ないし。
おわりに
2018 年の 1.8.0
から parcel
が使えるってことは、おそらく自分が Parcel そのものの存在を知ったときには既に使用可能だったのだと思う。これからは parcel
を使えばいいんだろうけど、parcel-bundler
を要求する別のパッケージがあったりした場合がだるそう。peerDependencies で両方指定すれば良いのかな?詳しく調べてないので意外と大丈夫なのかもしれないが、何にせよ v2 対応時には否が応でも parcel
に移ることになるので留意しておきましょう。
ついでにパッケージ (など) の名前とかについての紛争についてのポリシーを貼っておく。
前々から Parcel, npm に限らず、パッケージレジストリの名前が枯渇したりしないか気になっている。username/package
とかで空間を広げていくのか、メンテされてないパッケージを潰していくのか。というか、今回は古い parcel
の 0.0.1
の上に 1.8.0
から積み上げていってるけど、2.2.0
とか行っちゃってるものに 1.13.0
を重ねたりするのは無理では?そういうときどう扱われるんだろう。
Discussion