Webフロントエンドでの話
Webフロントエンドとは縁がないのでよく知らんが、ビルドツールは 最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 で取り上げたことがある。
2017年前半に、bowerというツールも終焉したらしい(よく知らんが、ご愁傷様)。
なんか、教訓がとても面白い、つうか、心に響く。
パッケージリソースのオリジナル(原版、原本)は、githubにあるらしい。で、パッケージ管理組織が2つあって、それぞれに登録されているような状況だったらしい。登録名や登録情報が食い違う場合もある。登録の最新バージョンも違う、と。二重管理の悲劇。
パッケージやモジュールの名前が、ファイルシステムのディレクトリ名/ファイル名と結びついていると、OSによる名前の扱いの違いがリスクになる。大文字小文字の違いとか、使える文字とか。これはあるあるネタだ。
./bower_components/ の下にファイルを配置したのが、./node_modules/ に変わった。パスの変更。こういう変更も地味に痛い(ボディブローの痛さ)。
次、これを読むと、
アセットバンドラー 〈asset bundler〉つう知らん言葉に出会った。具体的にはwebpackというヤツ。packだから確かにバンドラーっぽい。
だが、どうもタスクランナー(つうのか、デキの悪いビルドツール機能)も入っているようだ。なんか、ツール間での機能・役割の重複があるなー。本来のタスクランナーはどうなってるんだ?
ともかくも、webpackもnode.jsエコシステムに乗っかる感じで動くようだ。node_modules/ の下のnpmモジュールをいじる感じみたい。
yarnてのはベターnpmなんだそうだ。
ところで、タスクランナーがイヤで、npm一本、npm-scriptsだけでやる、なんて話もあったな。シェルに頼るならMakefileでも同じだと思うけど、、、、
どうせフロントエンドやる機会はないだろうが、所感をまとめておくと:
- npmエコシステムは安定しているから、頼ってもいいだろう。
- grunt, gulpみたいなものは信用ならん。簡単なら、npm-scripts、複雑ならmakeでいいだろう。
- bowerが終わったのは、npmと重複機能を実装していたからだろう。重複機能には要注意だな。その意味で、grunt, gulpとwebpackの機能重複は嫌な匂いがする。
- アセットバンドラーという種類のソフトウェアが必要らしい。まー、必要だろうな、確実に。で、webpackという実装がある。
- 豆知識: ローカルインストールでは、./node_modules/.bin/ にツールの実行コマンドが置かれるらしい。このディレクトリを$NPM_BINとか書く。
やるやらないはともかくとして、webpackというものはソフトウェアとして面白そうだ。