From 938e9d35ccf5d4146bf3b465bc7a67ad4af0f175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Kuna?= <1282324+codecalm@users.noreply.github.com> Date: Mon, 12 Jan 2026 02:52:15 +0100 Subject: [PATCH] refactor: migrate Vite configuration from .ts to .mts (#2594) --- core/.build/vite.config.mts | 30 +++++++++++++++++ core/.build/vite.config.ts | 33 ------------------- core/package.json | 16 ++++----- core/scss/_props.scss | 1 - core/scss/mixins/_functions.scss | 2 -- .../{vite.config.ts => vite.config.mts} | 11 ++----- docs/package.json | 4 +-- .../{vite.config.ts => vite.config.mts} | 10 ++---- preview/package.json | 4 +-- 9 files changed, 46 insertions(+), 65 deletions(-) create mode 100644 core/.build/vite.config.mts delete mode 100644 core/.build/vite.config.ts rename docs/.build/{vite.config.ts => vite.config.mts} (58%) rename preview/.build/{vite.config.ts => vite.config.mts} (61%) diff --git a/core/.build/vite.config.mts b/core/.build/vite.config.mts new file mode 100644 index 000000000..be34cb3f5 --- /dev/null +++ b/core/.build/vite.config.mts @@ -0,0 +1,30 @@ +import path from 'node:path' +import process from 'node:process' +import { fileURLToPath } from 'node:url' +import { createViteConfig } from '../../.build/vite.config.helper' +import getBanner from '../../shared/banner/index.mjs' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + +const baseName = process.env.BASE_NAME || 'tabler' +const entryFile = baseName +const libraryName = baseName + +const bannerText = getBanner() + +const entryPath = path.resolve(__dirname, `../js/${entryFile}`) +const entry = `${entryPath}.ts` + +export default createViteConfig({ + entry: entry, + name: libraryName, + fileName: (format) => { + const esmSuffix = format === 'es' ? '.esm' : '' + return `${baseName}${esmSuffix}.js` + }, + formats: ['es', 'umd'], + outDir: path.resolve(__dirname, '../dist/js'), + banner: bannerText, + minify: false +}) + diff --git a/core/.build/vite.config.ts b/core/.build/vite.config.ts deleted file mode 100644 index 76d548c9b..000000000 --- a/core/.build/vite.config.ts +++ /dev/null @@ -1,33 +0,0 @@ -import path from 'node:path' -import process from 'node:process' -import { fileURLToPath } from 'node:url' -import { existsSync } from 'node:fs' -import { createViteConfig } from '../../.build/vite.config.helper' -import getBanner from '../../shared/banner/index.mjs' - -const __dirname = path.dirname(fileURLToPath(import.meta.url)) - -const ESM = process.env.ESM === 'true' -const THEME = process.env.THEME === 'true' - -const MINIFY = process.env.MINIFY === 'true' -const destinationFile = `tabler${THEME ? '-theme' : ''}${ESM ? '.esm' : ''}` -const entryFile = `tabler${THEME ? '-theme' : ''}` -const libraryName = `tabler${THEME ? '-theme' : ''}` - -const bannerText = getBanner() - -// Try .ts first, fallback to .js for gradual migration -const entryPath = path.resolve(__dirname, `../js/${entryFile}`) -const entry = existsSync(`${entryPath}.ts`) ? `${entryPath}.ts` : `${entryPath}.js` - -export default createViteConfig({ - entry: entry, - name: ESM ? undefined : libraryName, - fileName: () => MINIFY ? `${destinationFile}.min.js` : `${destinationFile}.js`, - formats: [ESM ? 'es' : 'umd'], - outDir: path.resolve(__dirname, '../dist/js'), - banner: bannerText, - minify: MINIFY ? true : false -}) - diff --git a/core/package.json b/core/package.json index 6e344088d..ff4d4825f 100644 --- a/core/package.json +++ b/core/package.json @@ -19,16 +19,12 @@ "css-lint": "pnpm run css-lint-variables", "css-lint-variables": "find-unused-sass-variables scss/ node_modules/bootstrap/scss/", "js": "pnpm run js-build && pnpm run js-build-min", - "js-build": "concurrently \"pnpm run js-build-standalone\" \"pnpm run js-build-standalone-esm\" \"pnpm run js-build-theme\" \"pnpm run js-build-theme-esm\"", - "js-build-theme-esm": "cross-env THEME=true ESM=true vite build --config .build/vite.config.ts", - "js-build-theme": "cross-env THEME=true vite build --config .build/vite.config.ts", - "js-build-standalone": "vite build --config .build/vite.config.ts", - "js-build-standalone-esm": "cross-env ESM=true vite build --config .build/vite.config.ts", - "js-build-min": "concurrently \"pnpm run js-build-min-standalone\" \"pnpm run js-build-min-standalone-esm\" \"pnpm run js-build-min-theme\" \"pnpm run js-build-min-theme-esm\"", - "js-build-min-standalone": "cross-env MINIFY=true vite build --config .build/vite.config.ts", - "js-build-min-standalone-esm": "cross-env MINIFY=true ESM=true vite build --config .build/vite.config.ts", - "js-build-min-theme": "cross-env MINIFY=true THEME=true vite build --config .build/vite.config.ts", - "js-build-min-theme-esm": "cross-env MINIFY=true THEME=true ESM=true vite build --config .build/vite.config.ts", + "js-build": "concurrently \"pnpm run js-build-standalone\" \"pnpm run js-build-theme\"", + "js-build-theme": "cross-env BASE_NAME=tabler-theme vite build --config .build/vite.config.mts", + "js-build-standalone": "cross-env BASE_NAME=tabler vite build --config .build/vite.config.mts", + "js-build-min": "concurrently \"pnpm run js-build-min-standalone\" \"pnpm run js-build-min-theme\"", + "js-build-min-standalone": "concurrently \"terser dist/js/tabler.js --compress --mangle --comments '/@license|@preserve|^!/' --source-map \\\"content=dist/js/tabler.js.map,filename=dist/js/tabler.min.js.map,url=tabler.min.js.map\\\" -o dist/js/tabler.min.js\" \"terser dist/js/tabler.esm.js --module --compress --mangle --comments '/@license|@preserve|^!/' --source-map \\\"content=dist/js/tabler.esm.js.map,filename=dist/js/tabler.esm.min.js.map,url=tabler.esm.min.js.map\\\" -o dist/js/tabler.esm.min.js\"", + "js-build-min-theme": "concurrently \"terser dist/js/tabler-theme.js --compress --mangle --comments '/@license|@preserve|^!/' --source-map \\\"content=dist/js/tabler-theme.js.map,filename=dist/js/tabler-theme.min.js.map,url=tabler-theme.min.js.map\\\" -o dist/js/tabler-theme.min.js\" \"terser dist/js/tabler-theme.esm.js --module --compress --mangle --comments '/@license|@preserve|^!/' --source-map \\\"content=dist/js/tabler-theme.esm.js.map,filename=dist/js/tabler-theme.esm.min.js.map,url=tabler-theme.esm.min.js.map\\\" -o dist/js/tabler-theme.esm.min.js\"", "copy": "concurrently \"pnpm run copy-img\" \"pnpm run copy-libs\" \"pnpm run copy-fonts\"", "copy-img": "shx mkdir -p dist/img && shx cp -rf img/* dist/img", "copy-libs": "tsx .build/copy-libs.ts", diff --git a/core/scss/_props.scss b/core/scss/_props.scss index 3f1a65f5f..39bee52e1 100644 --- a/core/scss/_props.scss +++ b/core/scss/_props.scss @@ -32,7 +32,6 @@ /** Theme colors */ @each $name, $color in map.merge($theme-colors, $social-colors) { - @debug contrast-ratio($color, white), $name, $min-contrast-ratio; --#{$prefix}#{$name}: #{$color}; --#{$prefix}#{$name}-rgb: #{to-rgb($color)}; --#{$prefix}#{$name}-fg: #{if(contrast-ratio($color) > $min-contrast-ratio, var(--#{$prefix}light), var(--#{$prefix}dark))}; diff --git a/core/scss/mixins/_functions.scss b/core/scss/mixins/_functions.scss index baae37a97..f2c3b6e6b 100644 --- a/core/scss/mixins/_functions.scss +++ b/core/scss/mixins/_functions.scss @@ -138,8 +138,6 @@ // Colors @function to-rgb($value) { - @debug $value; - @return color.channel($value, 'red', $space: rgb), color.channel($value, 'green', $space: rgb), color.channel($value, 'blue', $space: rgb); } diff --git a/docs/.build/vite.config.ts b/docs/.build/vite.config.mts similarity index 58% rename from docs/.build/vite.config.ts rename to docs/.build/vite.config.mts index 84dd287cb..83aba7ef6 100644 --- a/docs/.build/vite.config.ts +++ b/docs/.build/vite.config.mts @@ -1,25 +1,20 @@ import path from 'node:path' -import process from 'node:process' import { fileURLToPath } from 'node:url' -import { existsSync } from 'node:fs' import { createViteConfig } from '../../.build/vite.config.helper' import getBanner from '../../shared/banner/index.mjs' const __dirname = path.dirname(fileURLToPath(import.meta.url)) -const MINIFY = process.env.MINIFY === 'true' - -// Try .ts first, fallback to .js for gradual migration const entryPath = path.resolve(__dirname, '../js/docs') -const entry = existsSync(`${entryPath}.ts`) ? `${entryPath}.ts` : `${entryPath}.js` +const entry = `${entryPath}.ts` export default createViteConfig({ entry: entry, name: 'docs', - fileName: () => MINIFY ? 'docs.min.js' : 'docs.js', + fileName: () => 'docs.js', formats: ['es'], outDir: path.resolve(__dirname, '../dist/js'), banner: undefined, - minify: MINIFY + minify: false }) diff --git a/docs/package.json b/docs/package.json index f1ec06fe5..cf64eed7d 100644 --- a/docs/package.json +++ b/docs/package.json @@ -8,9 +8,9 @@ "build-assets": "concurrently \"pnpm run js\" \"pnpm run css\"", "html": "eleventy", "js": "pnpm run js-build && pnpm run js-build-min", - "js-build": "vite build --config .build/vite.config.ts", + "js-build": "vite build --config .build/vite.config.mts", "js-build-min": "pnpm run js-build-min-docs", - "js-build-min-docs": "cross-env MINIFY=true vite build --config .build/vite.config.ts", + "js-build-min-docs": "terser dist/js/docs.js --module --compress --mangle --comments '/@license|@preserve|^!/' --source-map \"content=dist/js/docs.js.map,filename=dist/js/docs.min.js.map,url=docs.min.js.map\" -o dist/js/docs.min.js", "css": "pnpm run css-build && pnpm run css-prefix && pnpm run css-minify", "css-build": "sass scss/:dist/css/ --no-source-map --load-path=./node_modules", "css-prefix": "postcss --config .build/postcss.config.mjs --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"", diff --git a/preview/.build/vite.config.ts b/preview/.build/vite.config.mts similarity index 61% rename from preview/.build/vite.config.ts rename to preview/.build/vite.config.mts index 2ac791f6d..d485563d0 100644 --- a/preview/.build/vite.config.ts +++ b/preview/.build/vite.config.mts @@ -1,26 +1,22 @@ import path from 'node:path' -import process from 'node:process' import { fileURLToPath } from 'node:url' -import { existsSync } from 'node:fs' import { createViteConfig } from '../../.build/vite.config.helper' import getBanner from '../../shared/banner/index.mjs' const __dirname = path.dirname(fileURLToPath(import.meta.url)) -const MINIFY = process.env.MINIFY === 'true' const bannerText = getBanner('Demo') -// Try .ts first, fallback to .js for gradual migration const entryPath = path.resolve(__dirname, '../js/demo') -const entry = existsSync(`${entryPath}.ts`) ? `${entryPath}.ts` : `${entryPath}.js` +const entry = `${entryPath}.ts` export default createViteConfig({ entry: entry, name: 'demo', - fileName: () => MINIFY ? 'demo.min.js' : 'demo.js', + fileName: () => 'demo.js', formats: ['es'], outDir: path.resolve(__dirname, '../dist/preview/js'), banner: bannerText, - minify: MINIFY + minify: false }) diff --git a/preview/package.json b/preview/package.json index 91e7c38ec..2bad486b5 100644 --- a/preview/package.json +++ b/preview/package.json @@ -15,9 +15,9 @@ "css-prefix": "postcss --config .build/postcss.config.mjs --replace \"dist/preview/css/*.css\" \"!dist/preview/css/*.rtl*.css\" \"!dist/preview/css/*.min.css\"", "css-minify": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/preview/css/ --batch --batch-suffix \".min\" \"dist/preview/css/*.css\" \"!dist/preview/css/*.min.css\" \"!dist/preview/css/*rtl*.css\"", "js": "pnpm run js-build && pnpm run js-build-min", - "js-build": "vite build --config .build/vite.config.ts", + "js-build": "vite build --config .build/vite.config.mts", "js-build-min": "pnpm run js-build-min-demo", - "js-build-min-demo": "cross-env MINIFY=true vite build --config .build/vite.config.ts", + "js-build-min-demo": "terser dist/preview/js/demo.js --module --compress --mangle --comments '/@license|@preserve|^!/' --source-map \"content=dist/preview/js/demo.js.map,filename=dist/preview/js/demo.min.js.map,url=demo.min.js.map\" -o dist/preview/js/demo.min.js", "clean": "shx rm -rf dist demo", "html": "pnpm run html-build && pnpm run html-prettify && pnpm run html-remove-prettier-ignore", "html-build": "eleventy",