Skip to content

Commit 6d49bf6

Browse files
bluwyrojadesign
authored andcommitted
feat(lib)!: use package name for css output file name (#498)
closes #498
1 parent 873461a commit 6d49bf6

File tree

3 files changed

+74
-6
lines changed

3 files changed

+74
-6
lines changed

docs/config/build-options.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,28 @@ Optionen, die an [@rollup/plugin-dynamic-import-vars](https://github.com/rollup/
157157

158158
## build.lib
159159

160-
- **Typ:** `{ entry: string | string[] | { [entryAlias: string]: string }, name?: string, formats?: ('es' | 'cjs' | 'umd' | 'iife')[], fileName?: string | ((format: ModuleFormat, entryName: string) => string) }`
160+
- **Typ:** `{ entry: string | string[] | { [entryAlias: string]: string }, name?: string, formats?: ('es' | 'cjs' | 'umd' | 'iife')[], fileName?: string | ((format: ModuleFormat, entryName: string) => string), cssFileName?: string }`
161161
- **Verwandt:** [Library-Modus](/guide/build#library-mode)
162162

163-
Bauen Sie als Bibliothek. `entry` ist erforderlich, da die Bibliothek HTML nicht als Eingabe verwenden kann. `name` ist die freigegebene globale Variable und ist erforderlich, wenn `formats` `'umd'` oder `'iife'` enthält. Die Standardformate sind `['es', 'umd']` oder `['es', 'cjs']`, wenn mehrere Eingaben verwendet werden. `fileName` ist der Name der Paketdatei-Ausgabe, standardmäßig ist `fileName` die Optionsnamen aus package.json, er kann auch als Funktion definiert werden, die `format` und `entryAlias` als Argumente akzeptiert.
163+
Als Bibliothek erstellen. `entry` ist erforderlich, da die Bibliothek HTML nicht als Eintrag verwenden kann. `name` ist die exponierte globale Variable und erforderlich, wenn `formats` `'umd'` oder `'iife'` enthält. Die Standardformate sind `['es', 'umd']` oder `['es', 'cjs']`, wenn mehrere Einträge verwendet werden.
164+
165+
`fileName` ist der Name der ausgegebenen Paketdatei, der standardmäßig dem `"name"` in `package.json` entspricht. Er kann auch als Funktion definiert werden, die `format` und `entryName` als Argumente übernimmt und den Dateinamen zurückgibt.
166+
167+
Wenn Ihr Paket CSS importiert, kann „cssFileName“ verwendet werden, um den Namen der CSS-Datei-Ausgabe anzugeben. Der Standardwert ist derselbe wie „fileName“, wenn dieser als Zeichenfolge festgelegt ist, andernfalls wird ebenfalls auf „name“ in „package.json“ zurückgegriffen.
168+
169+
```js twoslash [vite.config.js]
170+
import { defineConfig } from 'vite'
171+
172+
export default defineConfig({
173+
build: {
174+
lib: {
175+
entry: ['src/main.js'],
176+
fileName: (format, entryName) => `my-lib-${entryName}.${format}.js`,
177+
cssFileName: 'my-lib-style',
178+
},
179+
},
180+
})
181+
```
164182

165183
## build.manifest
166184

docs/guide/build.md

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,12 @@ import Bar from './Bar.vue'
185185
export { Foo, Bar }
186186
```
187187

188-
Die Ausführung von `vite build` mit dieser Konfiguration verwendet ein Rollup-Preset, das auf die Bereitstellung von Bibliotheken ausgerichtet ist und zwei Bündelformate erstellt: `es` und `umd` (konfigurierbar über `build.lib`):
188+
Wenn Sie `vite build` mit dieser Konfiguration ausführen, wird eine Rollup-Voreinstellung verwendet, die auf die Auslieferung von Bibliotheken ausgerichtet ist und zwei Bundle-Formate erzeugt:
189+
190+
- `es` und `umd` (für einen einzelnen Eintrag)
191+
- `es` und `cjs` (für mehrere Einträge)
192+
193+
Die Formate können mit der Option [„build.lib.formats“](/config/build-options.md#build-lib) konfiguriert werden.
189194

190195
```
191196
$ vite build
@@ -234,8 +239,33 @@ Oder, wenn mehrere Einstiegspunkte freigegeben werden:
234239
}
235240
```
236241

237-
::: tip Dateierweiterungen
238-
Wenn die `package.json` nicht `"type": "module"` enthält, generiert Vite unterschiedliche Dateierweiterungen für Node.js-Kompatibilität. `.js` wird zu `.mjs` und `.cjs` wird zu `.js`.
242+
:::
243+
244+
### CSS-Unterstützung
245+
246+
Wenn Ihre Bibliothek CSS importiert, wird es neben den erstellten JS-Dateien als einzelne CSS-Datei gebündelt, z. B. `dist/my-lib.css`. Der Name lautet standardmäßig `build.lib.fileName`, kann aber auch mit [`build.lib.cssFileName`](/config/build-options.md#build-lib) geändert werden.
247+
248+
Sie können die CSS-Datei in Ihrer `package.json` exportieren, damit sie von Benutzern importiert werden kann:
249+
250+
```json {12}
251+
{
252+
"name": "my-lib",
253+
"type": "module",
254+
"files": ["dist"],
255+
"main": "./dist/my-lib.umd.cjs",
256+
"module": "./dist/my-lib.js",
257+
"exports": {
258+
".": {
259+
"import": "./dist/my-lib.js",
260+
"require": "./dist/my-lib.umd.cjs"
261+
},
262+
"./style.css": "./dist/my-lib.css"
263+
}
264+
}
265+
```
266+
267+
::: tip File Extensions
268+
If the `package.json` does not contain `"type": "module"`, Vite will generate different file extensions for Node.js compatibility. `.js` will become `.mjs` and `.cjs` will become `.js`.
239269
:::
240270

241271
::: tip Umgebungsvariablen

docs/guide/migration.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,27 @@ In Vite 5 wurde standardmäßig die Legacy-API für Sass verwendet. Vite 5.4 fü
3030

3131
Ab Vite 6 wird die moderne API standardmäßig für Sass verwendet. Wenn Sie weiterhin die Legacy-API verwenden möchten, können Sie [`css.preprocessorOptions.sass.api: 'legacy'` / `css.preprocessorOptions.scss.api: 'legacy'`](/config/shared-options#css-preprocessoroptions) einstellen. Beachten Sie jedoch, dass die Unterstützung der Legacy-API in Vite 7 entfernt wird.
3232

33-
Um auf die moderne API umzusteigen, siehe [die Sass-Dokumentation](https://sass-lang.com/documentation/breaking-changes/legacy-js-api/).
33+
Um zur modernen API zu migrieren, lesen Sie bitte die [Sass-Dokumentation](https://sass-lang.com/documentation/breaking-changes/legacy-js-api/).
34+
35+
### CSS-Ausgabedateinamen im Bibliotheksmodus anpassen
36+
37+
In Vite 5 lautete der CSS-Ausgabedateiname im Bibliotheksmodus immer „style.css“ und konnte nicht ohne Weiteres über die Vite-Konfiguration geändert werden.
38+
39+
Ab Vite 6 wird für den Standarddateinamen nun „name“ aus „package.json“ verwendet, ähnlich wie bei den JS-Ausgabedateien. Wenn [`build.lib.fileName`](/config/build-options.md#build-lib) mit einer Zeichenfolge festgelegt ist, wird dieser Wert auch für den Namen der CSS-Ausgabedatei verwendet. Um explizit einen anderen CSS-Dateinamen festzulegen, können Sie die neue Option [`build.lib.cssFileName`](/config/build-options.md#build-lib) verwenden.
40+
41+
Wenn Sie sich bisher auf den Dateinamen `style.css` verlassen haben, sollten Sie für die Migration die Verweise darauf auf den neuen Namen basierend auf Ihrem Paketnamen aktualisieren. Beispiel:
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+
Wenn Sie wie in Vite 5 lieber bei `style.css` bleiben möchten, können Sie stattdessen `build.lib.cssFileName: 'style'` festlegen.
3454

3555
## Erweitert
3656

0 commit comments

Comments
 (0)