Skip to content

Commit bad97cd

Browse files
authored
feat(lib)!: use package name for css output file name (#1682)
1 parent c8e2a99 commit bad97cd

File tree

3 files changed

+69
-3
lines changed

3 files changed

+69
-3
lines changed

config/build-options.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,28 @@ CSS コード分割を有効/無効にします。有効にすると、非同期
162162

163163
## build.lib
164164

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

168-
ライブラリーとしてビルドします。ライブラリーではエントリーとして HTML を使用できないため、`entry` が必要です。`name` は公開されているグローバル変数で、`formats``'umd'``'iife'` が含まれている場合に必要です。デフォルトの `formats``['es', 'umd']` で、複数のエントリーを使用する場合は `['es', 'cjs']` です。`fileName` は出力されるパッケージファイルの名前です。デフォルトの `fileName` は package.json の name オプションですが、`format``entryName` を引数にとる関数として定義することもできます。
168+
ライブラリーとしてビルドします。ライブラリーではエントリーとして HTML を使用できないため、`entry` が必要です。`name` は公開されているグローバル変数で、`formats``'umd'``'iife'` が含まれている場合に必要です。
169+
170+
`fileName` はパッケージファイルの出力名で、デフォルトでは `package.json``"name"` となります。 また、`format``entryName` を引数として受け取り、ファイル名を返す関数として定義することもできます。
171+
172+
パッケージが CSS をインポートしている場合、`cssFileName` を使用して出力される CSS ファイルの名前を指定できます。文字列が設定されている場合は、デフォルトで `fileName` と同じ値になります。それ以外の場合、`package.json``"name"` にフォールバックします。
173+
174+
```js twoslash [vite.config.js]
175+
import { defineConfig } from 'vite'
176+
177+
export default defineConfig({
178+
build: {
179+
lib: {
180+
entry: ['src/main.js'],
181+
fileName: (format, entryName) => `my-lib-${entryName}.${format}.js`,
182+
cssFileName: 'my-lib-style',
183+
},
184+
},
185+
})
186+
```
169187

170188
## build.manifest
171189

guide/build.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,12 @@ import Bar from './Bar.vue'
200200
export { Foo, Bar }
201201
```
202202

203-
この設定で `vite build` を実行するとライブラリーの出荷を目的とした Rollup プリセットが使用され 2 つのバンドルフォーマットが生成されます。`es``umd``build.lib` で設定可能):
203+
この設定で `vite build` を実行するとライブラリーの出荷を目的とした Rollup プリセットが使用され 2 つのバンドルフォーマットが生成されます:
204+
205+
- `es``umd`(単一のエントリー用)
206+
- `es``cjs`(複数のエントリー用)
207+
208+
フォーマットは [`build.lib.formats`](/config/build-options.md#build-lib) オプションで設定できます。
204209

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

252257
:::
253258

259+
### CSS サポート
260+
261+
ライブラリーが CSS をインポートしている場合、ビルドされた JS ファイルとは別に、単一の CSS ファイルとしてバンドルされます(例えば、`dist/my-lib.css` など)。デフォルトのファイル名は `build.lib.fileName` ですが、[`build.lib.cssFileName`](/config/build-options.md#build-lib) で変更することもできます。
262+
263+
ユーザーがインポートできるように、`package.json` で CSS ファイルをエクスポートできます:
264+
265+
```json {12}
266+
{
267+
"name": "my-lib",
268+
"type": "module",
269+
"files": ["dist"],
270+
"main": "./dist/my-lib.umd.cjs",
271+
"module": "./dist/my-lib.js",
272+
"exports": {
273+
".": {
274+
"import": "./dist/my-lib.js",
275+
"require": "./dist/my-lib.umd.cjs"
276+
},
277+
"./style.css": "./dist/my-lib.css"
278+
}
279+
}
280+
```
281+
254282
::: tip ファイル拡張子
255283
`package.json``"type": "module"` を含まない場合、Vite は Node.js の互換性のため異なるファイル拡張子を生成します。`.js``.mjs` に、`.cjs``.js` になります。
256284
:::

guide/migration.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,26 @@ Vite 6 以降では、モダン API がデフォルトで Sass に使用され
3232

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

35+
### ライブラリーモードでの CSS 出力ファイル名のカスタマイズ
36+
37+
Vite 5 では、ライブラリーモードでの CSS 出力ファイル名は常に `style.css` であり、Vite の設定ファイルから簡単に変更することはできませんでした。
38+
39+
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) を使用して設定できます。
40+
41+
移行するには、`style.css` ファイル名に依存していた場合は、そのファイル名への参照をパッケージ名に基づく新しい名前に更新する必要があります。例:
42+
43+
```json [package.json]
44+
{
45+
"name": "my-lib",
46+
"exports": {
47+
"./style.css": "./dist/style.css" // [!code --]
48+
"./style.css": "./dist/my-lib.css" // [!code ++]
49+
}
50+
}
51+
```
52+
53+
Vite 5 のように `style.css` を使い続けたい場合は、代わりに `build.lib.cssFileName: 'style'` を設定できます。
54+
3555
## 高度な内容
3656

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

0 commit comments

Comments
 (0)