@imagexmedia/vite 0.0.2 → 0.0.4-beta.1

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/dist/index.js CHANGED
@@ -3,6 +3,7 @@ import process from 'node:process';
3
3
  import merge from 'deepmerge';
4
4
  import globby from 'globby';
5
5
  import { defineConfig, mergeConfig } from 'vite';
6
+ import { registerCssPlugins } from "./plugins/css.js";
6
7
  import { registerSvgPlugins } from "./plugins/svg.js";
7
8
  /**
8
9
  * Define Vite configuration.
@@ -37,6 +38,7 @@ export function setConfig(options = {}, config = {}) {
37
38
  return defineConfig((env) => {
38
39
  const baseConfig = {
39
40
  plugins: [
41
+ ...registerCssPlugins(),
40
42
  ...registerSvgPlugins(options.plugins?.svg),
41
43
  ],
42
44
  publicDir: './static',
@@ -0,0 +1,5 @@
1
+ import type { ResolvedConfig } from 'vite';
2
+ export declare function registerCssPlugins(): {
3
+ name: string;
4
+ configResolved(config: ResolvedConfig): void;
5
+ }[];
@@ -0,0 +1,40 @@
1
+ import { Buffer } from 'node:buffer';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ function cssSourcemap() {
5
+ return {
6
+ name: 'css-sourcemap',
7
+ configResolved(config) {
8
+ if (config.command !== 'build' || !config.css.devSourcemap)
9
+ return;
10
+ const plugin = config.plugins.find((v) => v.name === 'vite:css');
11
+ const transformHandler = plugin?.transform.handler;
12
+ if (!plugin || !transformHandler)
13
+ return;
14
+ plugin.transform.handler = async function (raw, id) {
15
+ const result = await transformHandler.call(this, raw, id);
16
+ if (result.map?.mappings) {
17
+ result.map.sourcesContent = [];
18
+ const outDir = path.join(config.root, config.build.outDir, config.build.assetsDir);
19
+ result.map.sources = result.map.sources.map((source, index) => {
20
+ try {
21
+ result.map.sourcesContent[index] = fs.readFileSync(source, 'utf-8');
22
+ }
23
+ catch {
24
+ result.map.sourcesContent[index] = null;
25
+ }
26
+ return path.relative(outDir, source);
27
+ });
28
+ const mapEncoded = Buffer.from(JSON.stringify(result.map)).toString('base64');
29
+ result.code += `\n/*# sourceMappingURL=data:application/json;base64,${mapEncoded} */`;
30
+ }
31
+ return result;
32
+ };
33
+ },
34
+ };
35
+ }
36
+ export function registerCssPlugins() {
37
+ // @todo Review and possibly remove when Vite stabilizes the devSourcemap option.
38
+ // https://github.com/vitejs/vite/discussions/13845
39
+ return [cssSourcemap()];
40
+ }
@@ -1,5 +1,6 @@
1
1
  import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap';
2
2
  import merge from 'deepmerge';
3
+ import globby from 'globby';
3
4
  import { ViteImageOptimizer } from 'vite-plugin-image-optimizer';
4
5
  const baseConfig = {
5
6
  multipass: true,
@@ -22,16 +23,19 @@ const baseConfig = {
22
23
  ],
23
24
  };
24
25
  export function registerSvgPlugins(options) {
25
- return [
26
+ const plugins = [
26
27
  ViteImageOptimizer({
27
28
  test: /\.(svg)$/i,
28
29
  includePublic: true,
29
30
  svg: merge(baseConfig, options?.svgo || {}),
30
31
  }),
31
- VitePluginSvgSpritemap('src/icons/*.svg', {
32
+ ];
33
+ if (globby.sync('src/icons/*.svg').length) {
34
+ plugins.push(VitePluginSvgSpritemap('src/icons/*.svg', {
32
35
  output: 'icons-sprite.svg',
33
36
  // SVG assets in the public directory are optimized after the build.
34
37
  svgo: false,
35
- }),
36
- ];
38
+ }));
39
+ }
40
+ return plugins;
37
41
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@imagexmedia/vite",
3
3
  "type": "module",
4
- "version": "0.0.2",
4
+ "version": "0.0.4-beta.1",
5
5
  "description": "The ImageX SWAT Vite package.",
6
6
  "author": "ImageX Media",
7
7
  "license": "MIT",
@@ -21,14 +21,17 @@
21
21
  "dist",
22
22
  "types"
23
23
  ],
24
+ "engines": {
25
+ "node": ">=22"
26
+ },
24
27
  "scripts": {
25
28
  "build": "rm -rf dist && tsc -b && mkdir -p packs && npm pack --pack-destination packs"
26
29
  },
27
30
  "dependencies": {
28
- "@spiriit/vite-plugin-svg-spritemap": "^5.0.0",
29
- "sass-embedded": "^1.95.1",
31
+ "@spiriit/vite-plugin-svg-spritemap": "^6.0.0",
32
+ "sass-embedded": "^1.97.3",
30
33
  "svgo": "^4.0.0",
31
- "vite": "^7.2.7",
34
+ "vite": "^7.3.1",
32
35
  "vite-plugin-image-optimizer": "^2.0.3"
33
36
  }
34
37
  }