From 7f0c611e20c0555b2a5ca9dead744b68b9b9a09a Mon Sep 17 00:00:00 2001 From: Stanislav Lashmanov <slashmanov@gitlab.com> Date: Tue, 16 Jul 2024 10:48:05 +0400 Subject: [PATCH] Add support for GitLab UI icons in Vite --- config/helpers/vite_plugin_icons.mjs | 27 +++++++++++++++++++++++++++ vite.config.js | 2 ++ 2 files changed, 29 insertions(+) create mode 100644 config/helpers/vite_plugin_icons.mjs diff --git a/config/helpers/vite_plugin_icons.mjs b/config/helpers/vite_plugin_icons.mjs new file mode 100644 index 0000000000000..6d7159bb87b1c --- /dev/null +++ b/config/helpers/vite_plugin_icons.mjs @@ -0,0 +1,27 @@ +import path from 'node:path'; +import { readdir } from 'node:fs/promises'; + +const GITLAB_SVG_PATH = '@gitlab/svgs/dist'; + +export async function IconsPlugin() { + return { + name: 'vite-plugin-gitlab-icons', + async config() { + const iconsPath = path.resolve(__dirname, '../..', 'node_modules', GITLAB_SVG_PATH); + const files = await readdir(iconsPath, { withFileTypes: true }); + const alias = files + .filter(file => file.isDirectory() || path.extname(file.name) === '.svg') + .map((file) => { + return { + find: file.name, + replacement: `${iconsPath}/${file.name}`, + } + }); + return { + resolve: { + alias, + } + } + } + }; +} diff --git a/vite.config.js b/vite.config.js index 5da94f07a617e..73d1d6e7038d2 100644 --- a/vite.config.js +++ b/vite.config.js @@ -20,6 +20,7 @@ import { AutoStopPlugin } from './config/helpers/vite_plugin_auto_stop.mjs'; import { PageEntrypointsPlugin } from './config/helpers/vite_plugin_page_entrypoints.mjs'; import { FixedRubyPlugin } from './config/helpers/vite_plugin_ruby_fixed.mjs'; import { StylePlugin } from './config/helpers/vite_plugin_style.mjs'; +import { IconsPlugin } from './config/helpers/vite_plugin_icons.mjs'; /* eslint-enable import/extensions */ let viteGDKConfig; @@ -84,6 +85,7 @@ export default defineConfig({ }, plugins: [ PageEntrypointsPlugin(), + IconsPlugin(), StylePlugin({ shouldWatch: viteGDKConfig.hmr !== null }), viteTailwindCompilerPlugin({ shouldWatch: viteGDKConfig.hmr !== null }), CopyPlugin({ -- GitLab