Frontend Academy · レッスン

npmへのバージョン管理と公開

セマンティックバージョニングを使い、Changesetsまたはstandard-versionで変更履歴の生成を自動化して、ライブラリをnpmまたはプライベートレジストリに公開します。

レッスン 3/415 ステップ

「npmへのバージョン管理と公開」はCoddyKit上の無料Frontend Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFrontend Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Frontend Academyコースには全4レッスンが含まれています。

npmに公開する理由

デザインシステムを複数のアプリで使用する場合は、パッケージとして公開します。利用側はnpm、yarn、pnpmでインストールし、バージョンを固定したうえで、自分たちのスケジュールに合わせて更新できます。

セマンティックバージョニング(SemVer)

バージョンはMAJOR.MINOR.PATCHの形式に従います。MAJOR:破壊的変更。MINOR:後方互換性のある新機能。PATCH:バグ修正のみ。

バージョンを上げるタイミング

propの名前を変更した?MAJORです。新しいオプションのpropを追加した?MINORです。CSSのバグを修正した?PATCHです。1.0未満のリリース(0.x.y)ではMINORでも破壊的変更が可能ですが、利用者に配慮してください。

package.json — マニフェスト

npm上でのパッケージの見え方を設定します。

{
  "name": "@yourorg/design-system",
  "version": "1.4.2",
  "main": "dist/index.cjs.js",
  "module": "dist/index.esm.js",
  "types": "dist/index.d.ts",
  "exports": {
    ".": { "import": "./dist/index.esm.js", "require": "./dist/index.cjs.js" },
    "./theme": "./dist/theme.js"
  },
  "files": ["dist", "README.md"],
  "peerDependencies": { "react": "^18.0.0" }
}

ビルド出力

CommonJS、ESM、型定義を提供します。tsupやvite build --libなどのツールがこれを処理します。

// tsup.config.ts
export default {
  entry: ['src/index.ts'],
  format: ['cjs', 'esm'],
  dts: true,
  clean: true,
  external: ['react', 'react-dom']
};

// package.json: "build": "tsup"

peerDependencies

React、VueなどをpeerDependenciesに記載し、利用側が独自のバージョンを使用できるようにします。通常のdependenciesとして指定すると、2重にバンドルされ、フックやコンテキストが壊れます。

Tree-shakingに対応しやすい構成

ESMのexportを使用し、副作用を避けることで、バンドラーが未使用のコンポーネントを除外できるようにします。package.jsonで"sideEffects": falseを指定します(またはCSSなど特定のファイルを列挙します)。

npmに公開する

一度ログインすれば、その後は公開できます。

npm login

# Bump version + publish:
npm version patch   # 1.4.2 -> 1.4.3
npm publish

# Or scoped public package:
npm publish --access public

Changesetsでリリースを自動化する

Changesetsは、モノレポとライブラリの公開に適した最新のツールキットです。プルリクエストに変更内容を説明する「changeset」ファイルを含めると、リリース用のCIがバージョンを更新して公開します。

npm install -D @changesets/cli
npx changeset init

# In each PR:
npx changeset
# pick package, type (major/minor/patch), describe change
# commits .changeset/<random>.md

# CI on main:
npx changeset version  # bumps versions in package.json + generates changelog
npx changeset publish  # publishes to npm

変更履歴の自動生成

Changesetsは、changesetの説明からパッケージごとのCHANGELOG.mdを自動生成します。利用者は各バージョンで何が変更されたかを確認できます。

npmのDist-tag

プレリリースにはdist-tagを使用します。npm publish --tag betaで公開してもlatestを上書きしません。利用者はnpm install @yourorg/design-system@betaで明示的に利用できます。

プライベートレジストリ

内部パッケージには、GitHub Packages、GitLab Package Registry、セルフホスト型のVerdaccioを使用できます。.npmrcで設定します:@yourorg:registry=https://npm.pkg.github.com。

古いバージョンを非推奨にする

インストール時に警告が表示されるよう、バージョンを非推奨としてマークします。

npm deprecate @yourorg/design-system@1.0.0 'Use 2.x for React 18 support'

クイックチェック

公開コンポーネントのpropの名前を変更した場合、SemVerではどの種類のバージョン更新が必要ですか?

振り返り:バージョン管理と公開

SemVerはMAJOR.MINOR.PATCHの形式で、破壊的変更、機能追加、修正を表します。CJS、ESM、型定義をビルドします(tsup、vite --lib)。ReactやVueはpeerDependenciesに指定します。tree-shakingにはsideEffects:falseを設定します。npm publishを実行するか、Changesetsで自動化します。CHANGELOGは自動生成できます。ベータ版にはdist-tagを使用します。内部パッケージにはプライベートレジストリを使用します。

無料で開始

AI チューターと学ぶ HTML — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
41
レッスン
163

よくある質問

「npmへのバージョン管理と公開」レッスンは無料ですか?

はい。「npmへのバージョン管理と公開」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Frontend Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Frontend Academyコースには全4レッスンが含まれています。

「npmへのバージョン管理と公開」で何を学びますか?

セマンティックバージョニングを使い、Changesetsまたはstandard-versionで変更履歴の生成を自動化して、ライブラリをnpmまたはプライベートレジストリに公開します。 ブラウザで直接実行するハンズオンコードでFrontend Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Frontend Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのFrontend Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「npmへのバージョン管理と公開」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このFrontend Academyレッスンでコードを書いて実行できますか?

はい。すべてのFrontend Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Storybook:Stories・Controls・Docs
  2. Style Dictionaryによるデザイントークン
  3. npmへのバージョン管理と公開
  4. デザインシステムの利用
← Frontend Academyに戻る