Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 20 additions & 2 deletions config/build-options.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,28 @@ CSS コード分割を有効/無効にします。有効にすると、非同期

## build.lib

- **型:** `{ entry: string | string[] | { [entryAlias: string]: string }, name?: string, formats?: ('es' | 'cjs' | 'umd' | 'iife')[], fileName?: string | ((format: ModuleFormat, entryName: string) => string) }`
- **型:** `{ entry: string | string[] | { [entryAlias: string]: string }, name?: string, formats?: ('es' | 'cjs' | 'umd' | 'iife')[], fileName?: string | ((format: ModuleFormat, entryName: string) => string), cssFileName?: string }`
- **関連:** [ライブラリーモード](/guide/build#library-mode)

ライブラリーとしてビルドします。ライブラリーではエントリーとして HTML を使用できないため、`entry` が必要です。`name` は公開されているグローバル変数で、`formats` に `'umd'` や `'iife'` が含まれている場合に必要です。デフォルトの `formats` は `['es', 'umd']` で、複数のエントリーを使用する場合は `['es', 'cjs']` です。`fileName` は出力されるパッケージファイルの名前です。デフォルトの `fileName` は package.json の name オプションですが、`format` と `entryName` を引数にとる関数として定義することもできます。
ライブラリーとしてビルドします。ライブラリーではエントリーとして HTML を使用できないため、`entry` が必要です。`name` は公開されているグローバル変数で、`formats` に `'umd'` や `'iife'` が含まれている場合に必要です。

`fileName` はパッケージファイルの出力名で、デフォルトでは `package.json` の `"name"` となります。 また、`format` と `entryName` を引数として受け取り、ファイル名を返す関数として定義することもできます。

パッケージが CSS をインポートしている場合、`cssFileName` を使用して出力される CSS ファイルの名前を指定できます。文字列が設定されている場合は、デフォルトで `fileName` と同じ値になります。それ以外の場合、`package.json` の `"name"` にフォールバックします。

```js twoslash [vite.config.js]
import { defineConfig } from 'vite'

export default defineConfig({
build: {
lib: {
entry: ['src/main.js'],
fileName: (format, entryName) => `my-lib-${entryName}.${format}.js`,
cssFileName: 'my-lib-style',
},
},
})
```

## build.manifest

Expand Down
30 changes: 29 additions & 1 deletion guide/build.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,12 @@ import Bar from './Bar.vue'
export { Foo, Bar }
```

この設定で `vite build` を実行するとライブラリーの出荷を目的とした Rollup プリセットが使用され 2 つのバンドルフォーマットが生成されます。`es` と `umd`(`build.lib` で設定可能):
この設定で `vite build` を実行するとライブラリーの出荷を目的とした Rollup プリセットが使用され 2 つのバンドルフォーマットが生成されます:

- `es` と `umd`(単一のエントリー用)
- `es` と `cjs`(複数のエントリー用)

フォーマットは [`build.lib.formats`](/config/build-options.md#build-lib) オプションで設定できます。

```
$ vite build
Expand Down Expand Up @@ -251,6 +256,29 @@ dist/my-lib.umd.cjs 0.30 kB / gzip: 0.16 kB

:::

### CSS サポート

ライブラリーが CSS をインポートしている場合、ビルドされた JS ファイルとは別に、単一の CSS ファイルとしてバンドルされます(例えば、`dist/my-lib.css` など)。デフォルトのファイル名は `build.lib.fileName` ですが、[`build.lib.cssFileName`](/config/build-options.md#build-lib) で変更することもできます。

ユーザーがインポートできるように、`package.json` で CSS ファイルをエクスポートできます:

```json {12}
{
"name": "my-lib",
"type": "module",
"files": ["dist"],
"main": "./dist/my-lib.umd.cjs",
"module": "./dist/my-lib.js",
"exports": {
".": {
"import": "./dist/my-lib.js",
"require": "./dist/my-lib.umd.cjs"
},
"./style.css": "./dist/my-lib.css"
}
}
```

::: tip ファイル拡張子
`package.json` が `"type": "module"` を含まない場合、Vite は Node.js の互換性のため異なるファイル拡張子を生成します。`.js` は `.mjs` に、`.cjs` は `.js` になります。
:::
Expand Down
20 changes: 20 additions & 0 deletions guide/migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,26 @@ Vite 6 以降では、モダン API がデフォルトで Sass に使用され

モダン API に移行するには、[Sass のドキュメント](https://sass-lang.com/documentation/breaking-changes/legacy-js-api/)を参照してください。

### ライブラリーモードでの CSS 出力ファイル名のカスタマイズ

Vite 5 では、ライブラリーモードでの CSS 出力ファイル名は常に `style.css` であり、Vite の設定ファイルから簡単に変更することはできませんでした。

Vite 6 からは、デフォルトのファイル名は JS 出力ファイルと同様に `package.json` の `"name"` を使用するようになりました。[`build.lib.fileName`](/config/build-options.md#build-lib) が文字列で設定されている場合、その値は CSS 出力ファイル名にも使用されます。別の CSS ファイル名を明示的に設定するには、新しい [`build.lib.cssFileName`](/config/build-options.md#build-lib) を使用して設定できます。

移行するには、`style.css` ファイル名に依存していた場合は、そのファイル名への参照をパッケージ名に基づく新しい名前に更新する必要があります。例:

```json [package.json]
{
"name": "my-lib",
"exports": {
"./style.css": "./dist/style.css" // [!code --]
"./style.css": "./dist/my-lib.css" // [!code ++]
}
}
```

Vite 5 のように `style.css` を使い続けたい場合は、代わりに `build.lib.cssFileName: 'style'` を設定できます。

## 高度な内容

少数のユーザーにのみ影響するその他の重大な変更があります。
Expand Down