vite-plugin-svg-spritegen 2.0.8 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,6 +36,8 @@ export default {
36
36
  };
37
37
  ```
38
38
 
39
+ Relative paths (`baseDir`, `outputDir`) are resolved against Vite's `root`. The output directory is created if it doesn't exist.
40
+
39
41
  ### Generated Files
40
42
 
41
43
  The plugin writes two files to `outputDir`:
package/dist/index.js CHANGED
@@ -24,11 +24,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  enumerable: true
25
25
  }) : target, mod));
26
26
  //#endregion
27
+ let node_fs = require("node:fs");
27
28
  let node_path = require("node:path");
28
29
  node_path = __toESM(node_path);
29
30
  let chokidar = require("chokidar");
30
31
  let vite = require("vite");
31
- let node_fs = require("node:fs");
32
32
  let fast_glob = require("fast-glob");
33
33
  fast_glob = __toESM(fast_glob);
34
34
  let node_html_parser = require("node-html-parser");
@@ -224,22 +224,27 @@ var SPRITE_VIRTUAL_ID = "\0virtual:svg-spritegen-sprite";
224
224
  var SPRITE_URL_PLACEHOLDER = "__SVG_SPRITEGEN_SPRITE_URL_PLACEHOLDER__";
225
225
  var toFilterArray = (p) => [p].flat().filter((x) => x != null);
226
226
  function svgSpritegen(config) {
227
- const inputConfigsResolved = (Array.isArray(config.input) ? config.input : [config.input ?? inputConfigDefaults]).map((inputConfig) => {
228
- const baseDir = node_path.default.resolve(process.cwd(), inputConfig.baseDir ?? inputConfigDefaults.baseDir);
229
- return {
230
- ...inputConfigDefaults,
231
- ...inputConfig,
232
- baseDir
233
- };
234
- });
227
+ const inputConfigs = Array.isArray(config.input) ? config.input : [config.input ?? inputConfigDefaults];
228
+ const resolveInputs = (root) => inputConfigs.map((inputConfig) => ({
229
+ ...inputConfigDefaults,
230
+ ...inputConfig,
231
+ baseDir: node_path.default.resolve(root, inputConfig.baseDir ?? inputConfigDefaults.baseDir)
232
+ }));
233
+ let inputConfigsResolved = resolveInputs(process.cwd());
235
234
  const stripUnusedResolved = { ...stripUnusedDefaults };
236
235
  if (typeof config.stripUnused === "object") Object.assign(stripUnusedResolved, config.stripUnused);
237
236
  else if (config.stripUnused === false) stripUnusedResolved.enabled = false;
238
- const outputPath = node_path.default.resolve(process.cwd(), config.outputDir);
239
237
  const spriteNameResolved = config.spriteFileName ?? "sprite.svg";
240
- const typesFilePath = (0, vite.normalizePath)(node_path.default.join(outputPath, config.typesFileName ?? "types.ts"));
241
- const spriteFilePath = (0, vite.normalizePath)(node_path.default.join(outputPath, spriteNameResolved));
242
- const gitignoreFilePath = (0, vite.normalizePath)(node_path.default.join(outputPath, ".gitignore"));
238
+ const resolveOutput = (root) => {
239
+ const outputPath = node_path.default.resolve(root, config.outputDir);
240
+ return {
241
+ outputPath,
242
+ typesFilePath: (0, vite.normalizePath)(node_path.default.join(outputPath, config.typesFileName ?? "types.ts")),
243
+ spriteFilePath: (0, vite.normalizePath)(node_path.default.join(outputPath, spriteNameResolved)),
244
+ gitignoreFilePath: (0, vite.normalizePath)(node_path.default.join(outputPath, ".gitignore"))
245
+ };
246
+ };
247
+ let { outputPath, typesFilePath, spriteFilePath, gitignoreFilePath } = resolveOutput(process.cwd());
243
248
  const matchPatternRe = new RegExp(stripUnusedResolved.matchPattern, "g");
244
249
  const idIncludes = toFilterArray(stripUnusedResolved.srcInclude);
245
250
  const idExcludes = ["**/node_modules/**", ...toFilterArray(stripUnusedResolved.srcExclude)];
@@ -252,11 +257,14 @@ function svgSpritegen(config) {
252
257
  return {
253
258
  name: "svg-spritegen",
254
259
  enforce: "pre",
255
- configResolved(config) {
256
- isBuild = config.command === "build";
257
- viteBase = config.base ?? "/";
260
+ configResolved(viteConfig) {
261
+ isBuild = viteConfig.command === "build";
262
+ viteBase = viteConfig.base ?? "/";
263
+ inputConfigsResolved = resolveInputs(viteConfig.root);
264
+ ({outputPath, typesFilePath, spriteFilePath, gitignoreFilePath} = resolveOutput(viteConfig.root));
258
265
  },
259
266
  async buildStart() {
267
+ (0, node_fs.mkdirSync)(outputPath, { recursive: true });
260
268
  allSvgs = await buildSvgMap(inputConfigsResolved, spriteFilePath);
261
269
  await writeTypes(typesFilePath, allSvgs);
262
270
  if (config.gitignore !== false) await writeGitignore(gitignoreFilePath, spriteNameResolved);
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
+ import { mkdirSync, promises, readFileSync, writeFileSync } from "node:fs";
1
2
  import path from "node:path";
2
3
  import { watch } from "chokidar";
3
4
  import { normalizePath } from "vite";
4
- import { promises, readFileSync, writeFileSync } from "node:fs";
5
5
  import fastGlob from "fast-glob";
6
6
  import { parse } from "node-html-parser";
7
7
  import { optimize } from "svgo";
@@ -196,22 +196,27 @@ var SPRITE_VIRTUAL_ID = "\0virtual:svg-spritegen-sprite";
196
196
  var SPRITE_URL_PLACEHOLDER = "__SVG_SPRITEGEN_SPRITE_URL_PLACEHOLDER__";
197
197
  var toFilterArray = (p) => [p].flat().filter((x) => x != null);
198
198
  function svgSpritegen(config) {
199
- const inputConfigsResolved = (Array.isArray(config.input) ? config.input : [config.input ?? inputConfigDefaults]).map((inputConfig) => {
200
- const baseDir = path.resolve(process.cwd(), inputConfig.baseDir ?? inputConfigDefaults.baseDir);
201
- return {
202
- ...inputConfigDefaults,
203
- ...inputConfig,
204
- baseDir
205
- };
206
- });
199
+ const inputConfigs = Array.isArray(config.input) ? config.input : [config.input ?? inputConfigDefaults];
200
+ const resolveInputs = (root) => inputConfigs.map((inputConfig) => ({
201
+ ...inputConfigDefaults,
202
+ ...inputConfig,
203
+ baseDir: path.resolve(root, inputConfig.baseDir ?? inputConfigDefaults.baseDir)
204
+ }));
205
+ let inputConfigsResolved = resolveInputs(process.cwd());
207
206
  const stripUnusedResolved = { ...stripUnusedDefaults };
208
207
  if (typeof config.stripUnused === "object") Object.assign(stripUnusedResolved, config.stripUnused);
209
208
  else if (config.stripUnused === false) stripUnusedResolved.enabled = false;
210
- const outputPath = path.resolve(process.cwd(), config.outputDir);
211
209
  const spriteNameResolved = config.spriteFileName ?? "sprite.svg";
212
- const typesFilePath = normalizePath(path.join(outputPath, config.typesFileName ?? "types.ts"));
213
- const spriteFilePath = normalizePath(path.join(outputPath, spriteNameResolved));
214
- const gitignoreFilePath = normalizePath(path.join(outputPath, ".gitignore"));
210
+ const resolveOutput = (root) => {
211
+ const outputPath = path.resolve(root, config.outputDir);
212
+ return {
213
+ outputPath,
214
+ typesFilePath: normalizePath(path.join(outputPath, config.typesFileName ?? "types.ts")),
215
+ spriteFilePath: normalizePath(path.join(outputPath, spriteNameResolved)),
216
+ gitignoreFilePath: normalizePath(path.join(outputPath, ".gitignore"))
217
+ };
218
+ };
219
+ let { outputPath, typesFilePath, spriteFilePath, gitignoreFilePath } = resolveOutput(process.cwd());
215
220
  const matchPatternRe = new RegExp(stripUnusedResolved.matchPattern, "g");
216
221
  const idIncludes = toFilterArray(stripUnusedResolved.srcInclude);
217
222
  const idExcludes = ["**/node_modules/**", ...toFilterArray(stripUnusedResolved.srcExclude)];
@@ -224,11 +229,14 @@ function svgSpritegen(config) {
224
229
  return {
225
230
  name: "svg-spritegen",
226
231
  enforce: "pre",
227
- configResolved(config) {
228
- isBuild = config.command === "build";
229
- viteBase = config.base ?? "/";
232
+ configResolved(viteConfig) {
233
+ isBuild = viteConfig.command === "build";
234
+ viteBase = viteConfig.base ?? "/";
235
+ inputConfigsResolved = resolveInputs(viteConfig.root);
236
+ ({outputPath, typesFilePath, spriteFilePath, gitignoreFilePath} = resolveOutput(viteConfig.root));
230
237
  },
231
238
  async buildStart() {
239
+ mkdirSync(outputPath, { recursive: true });
232
240
  allSvgs = await buildSvgMap(inputConfigsResolved, spriteFilePath);
233
241
  await writeTypes(typesFilePath, allSvgs);
234
242
  if (config.gitignore !== false) await writeGitignore(gitignoreFilePath, spriteNameResolved);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-svg-spritegen",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
4
4
  "description": "Vite plugin that generates an svg spritesheet, optionally removing unused svg files.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",