【セマンティックリリース】
semantic-release とは?
💡 「次のバージョンは何番?」をコミット履歴が自動で教えてくれる
📌 このページのポイント
semantic-releaseって何を自動化してくれるの?
バージョン番号を自動で決めるってどういうこと?
たとえば「feat: 新機能追加」というコミットがあればマイナーバージョンが上がる(1.2.0→1.3.0)。「fix: バグ修正」ならパッチバージョン(1.2.0→1.2.1)。「BREAKING CHANGE」があればメジャーバージョン(1.2.0→2.0.0)。コミットメッセージのルールさえ守れば、バージョン番号で悩むことがなくなるんだ
それってCI/CDの中で動くの?
そのとおり!GitHub ActionsなどのCIパイプラインの中で動かすのが基本だよ。mainブランチにマージされたら自動でsemantic-releaseが走って、新しいバージョンがリリースされる流れだね
npm以外のプロジェクトでも使えるの?
commitlintとセットで使うのが定番なのかな?
そのとおり!commitlintでコミットメッセージの形式を強制して、semantic-releaseがその形式を読み取ってリリースする、という組み合わせが鉄板だよ。ちなみにsemantic-releaseは「リリースブランチ」の概念もサポートしていて、mainだけでなくbetaやnextブランチからのプレリリース配信もできる。大規模OSSではこの機能を使ってアルファ版やベータ版を自動配信しているんだ
まとめ:ざっくりこれだけ覚えればOK!
「semantic-release」って出てきたら「コミット履歴からバージョンとリリースを全自動化するツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「semantic-release」 = 意味のあるリリース
💬 semantic(意味論的)はセマンティックバージョニングのsemantic。「コミットの意味を読み取ってリリースする」というコンセプトだよ