Skip to content

Commit eb80629

Browse files
Switch build for proicons to Rolldown and tsgo
1 parent af106a4 commit eb80629

27 files changed

Lines changed: 1702 additions & 1535 deletions

.prettierrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"printWidth": 90,
77
"endOfLine": "lf",
88
"tabWidth": 4,
9+
"switchCase": false,
910
"vueIndentScriptAndStyle": false,
1011
"svelteIndentScriptAndStyle": false,
1112
"overrides": [

bin/build/build-font.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { FontAssetType, generateFonts, OtherAssetType } from '@twbs/fantasticon';
2-
import ansiColors from "ansi-colors";
3-
import { execSync } from "child_process";
4-
import { existsSync, mkdirSync, readFileSync } from "fs";
5-
import SVGFixer from 'oslllo-svg-fixer';
6-
import path from "path";
7-
import codepoints from '../../icons/fonts/ProIcons.json' with { type: 'json' };
1+
import { FontAssetType, generateFonts, OtherAssetType } from '@twbs/fantasticon'
2+
import ansiColors from "ansi-colors"
3+
import { execSync } from "child_process"
4+
import { existsSync, mkdirSync, readFileSync } from "fs"
5+
import SVGFixer from 'oslllo-svg-fixer'
6+
import path from "path"
7+
import codepoints from '../../icons/fonts/ProIcons.json' with { type: 'json' }
88

99
const version = JSON.parse(readFileSync('package.json', 'utf-8')).version
1010

@@ -19,7 +19,7 @@ const metadata = `<?xml-model href="https://www.w3.org/TR/WOFF/metadata/woffmeta
1919
<vendor name="ProCode Software" url="https://procode-software.github.io/proicons"></vendor>
2020
</metadata>`
2121

22-
async function outlineSvgs(rebuild) {
22+
async function outlineSvgs(rebuild: boolean) {
2323
const inputDir = path.resolve('./icons/svg')
2424
const outputDir = path.resolve('./_outlined')
2525
const needsBuilding = rebuild || !existsSync(outputDir)
@@ -33,18 +33,18 @@ async function outlineSvgs(rebuild) {
3333
traceResolution: 800,
3434
}).fix()
3535

36-
console.log(ansiColors.green('Done outlining SVGs!'));
36+
console.log(ansiColors.green('Done outlining SVGs!'))
3737
} else {
38-
console.log(ansiColors.green('SVGs are already outlined, skipped'));
38+
console.log(ansiColors.green('SVGs are already outlined, skipped'))
3939
}
4040
} catch (err) {
41-
console.log(ansiColors.red('Error outlining SVGs:'));
42-
throw new Error(err);
41+
console.log(ansiColors.red('Error outlining SVGs:'))
42+
throw new Error(err)
4343
}
4444
}
4545

4646
/** @param {boolean} rebuild If --rebuild flag was used */
47-
export async function buildFont(rebuild) {
47+
export async function buildFont(rebuild: boolean) {
4848
try {
4949
console.log(execSync('pnpm run font:codepoints').toString('utf-8'))
5050
await outlineSvgs(rebuild)
@@ -81,10 +81,10 @@ export async function buildFont(rebuild) {
8181
prefix: 'proicon',
8282
})
8383

84-
console.log(ansiColors.green('Done building fonts!'));
84+
console.log(ansiColors.green('Done building fonts!'))
8585

8686
} catch (err) {
87-
console.log(ansiColors.red('Error building fonts:'));
88-
throw new Error(err);
87+
console.log(ansiColors.red('Error building fonts:'))
88+
throw new Error(err)
8989
}
9090
}

bin/build/createSvgNodes.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,11 @@ import { JSDOM } from 'jsdom'
22

33
export type IconNode = [string, Record<string, string>, IconNode[]]
44

5-
/**
6-
* Converts an SVG string to an array of IconNodes
7-
* @param {string} svg
8-
* @returns {IconNode[]}
9-
*/
10-
export function createSvgNodes(svg) {
5+
export function createSvgNodes(svg: string): IconNode[] {
116
const parser = new JSDOM(svg)
127
const svgElement = parser.window.document.querySelector('svg')
138

14-
/**
15-
* @returns {IconNode[]}
16-
* @param {Element} element
17-
*/
18-
function renderNodeList(element) {
9+
function renderNodeList(element: Element): IconNode[] {
1910
const nodeArray = []
2011

2112
for (const child of element.children) {

bin/build/fix-image.ts

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,32 @@
11
import fs from 'fs/promises'
2-
import pixelfix from '@proicons/pixelfix';
3-
import sharp from 'sharp';
2+
import pixelfix from '@proicons/pixelfix'
3+
import sharp from 'sharp'
44
import path from 'path'
55

6-
/**
7-
* @param {string} file
8-
* @param {string} root
9-
*/
10-
export default async ({ file, root }) => {
11-
const pngSizes = [24, 72, 120];
12-
const outDir = path.resolve(root, 'icons/svg');
6+
export default async ({ file, root }: {file: string, root: string}) => {
7+
const pngSizes = [24, 72, 120]
8+
const outDir = path.resolve(root, 'icons/svg')
139

1410
for (const size of pngSizes) {
15-
const colors = ['black', 'white'];
16-
const scale = size / 24;
17-
const newFolder = path.resolve(root, `icons/png${scale == 1 ? '' : `@${scale}x`}`);
11+
const colors = ['black', 'white']
12+
const scale = size / 24
13+
const newFolder = path.resolve(root, `icons/png${scale == 1 ? '' : `@${scale}x`}`)
1814

1915
for (const color of colors) {
20-
const newColorFolder = path.join(newFolder, color);
16+
const newColorFolder = path.join(newFolder, color)
2117

22-
await fs.mkdir(newColorFolder, { recursive: true });
18+
await fs.mkdir(newColorFolder, { recursive: true })
2319

2420
const fileCt = await fs.readFile(path.join(outDir, file), 'utf-8')
25-
const fileStr = fileCt.replaceAll('currentColor', color);
21+
const fileStr = fileCt.replaceAll('currentColor', color)
2622

27-
const newFilePath = path.resolve(newFolder, color, `${file.slice(0, -4)}.png`);
23+
const newFilePath = path.resolve(newFolder, color, `${file.slice(0, -4)}.png`)
2824

2925
try {
30-
await sharp(Buffer.from(fileStr)).resize(size, size).png().toFile(newFilePath);
31-
await pixelfix(newFilePath);
26+
await sharp(Buffer.from(fileStr)).resize(size, size).png().toFile(newFilePath)
27+
await pixelfix(newFilePath)
3228
} catch (error) {
33-
console.error(`Failed to generate ${file}`, error);
29+
console.error(`Failed to generate ${file}`, error)
3430
}
3531
}
3632
}

bin/build/templates/iconTemplate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { getData, Node } from './templateData.ts'
1+
import { getData, type Node } from './templateData.ts'
22

33
export default (moduleName: string, nodes: Node[]): string => {
44
const {

package.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
"jsdelivr": "dist/umd/proicons.cjs",
1414
"browser": "dist/umd/proicons.cjs",
1515
"files": [
16-
"dist"
16+
"dist", "!dist/types"
1717
],
1818
"exports": {
1919
".": {
20-
"types": "./dist/proicons.d.ts",
20+
"types": "./dist/types/proicons.d.ts",
2121
"import": "./dist/esm/proicons.js",
2222
"require": "./dist/cjs/proicons.cjs",
2323
"default": "./dist/umd/proicons.cjs"
@@ -39,8 +39,7 @@
3939
"scripts": {
4040
"dev": "pnpm vite",
4141
"all:build-modules": "pnpm -r run icons:build-modules",
42-
"build": "pnpm vite build && pnpm run build:minify",
43-
"build:minify": "pnpm esbuild --minify dist/umd/proicons.cjs --outfile=dist/umd/proicons.min.cjs --allow-overwrite",
42+
"build": "pnpm vite build",
4443
"icons:build": "node --no-deprecation ./bin/build.ts",
4544
"icons:build-modules": "node ./bin/addIconFiles.ts -t './bin/build/templates/iconTemplate.ts' -out './src/icons' -i './src/icons.ts' -d --format ts --clean",
4645
"icons:optimize": "pnpm run icons:build -o",
@@ -75,24 +74,25 @@
7574
"@proicons/pixelfix": "workspace:*",
7675
"@proicons/svgo-plugins": "workspace:*",
7776
"@twbs/fantasticon": "^3.1.0",
78-
"@types/node": "^22.15.32",
77+
"@types/node": "^22.16.5",
7978
"adm-zip": "^0.5.16",
8079
"ansi-colors": "^4.1.3",
81-
"axios": "^1.10.0",
82-
"esbuild": "^0.25.5",
83-
"form-data": "^4.0.3",
80+
"dts-bundle-generator": "^9.5.1",
81+
"axios": "^1.11.0",
82+
"form-data": "^4.0.4",
8483
"jsdom": "^26.1.0",
8584
"oslllo-svg-fixer": "^5.0.0",
8685
"piscina": "^4.9.2",
87-
"prettier": "^3.5.3",
86+
"prettier": "^3.6.2",
8887
"prettier-plugin-svelte": "^3.4.0",
8988
"progress": "^2.0.3",
90-
"rolldown-plugin-dts": "^0.13.11",
89+
"rolldown-plugin-dts": "^0.14.1",
9190
"sharp": "^0.33.5",
9291
"svgo": "^3.3.2",
9392
"typescript": "^5.8.3",
94-
"vite": "npm:rolldown-vite@^6.3.21",
95-
"vite-plugin-dts": "^4.5.4"
93+
"vite": "npm:rolldown-vite@^7.0.10",
94+
"vite-plugin-dts": "^4.5.4",
95+
"@typescript/native-preview": "7.0.0-dev.20250723.1"
9696
},
97-
"packageManager": "pnpm@10.12.1+sha512.f0dda8580f0ee9481c5c79a1d927b9164f2c478e90992ad268bbb2465a736984391d6333d2c327913578b2804af33474ca554ba29c04a8b13060a717675ae3ac"
97+
"packageManager": "pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad"
9898
}

packages/proicons-react/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@
4646
"devDependencies": {
4747
"@types/react": "^19.1.8",
4848
"@types/react-dom": "^19.1.6",
49-
"@vitejs/plugin-react-swc": "^3.10.2",
49+
"@vitejs/plugin-react-swc": "^3.11.0",
5050
"dts-bundle-generator": "^9.5.1",
5151
"react": "^19.1.0",
5252
"react-dom": "^19.1.0",
5353
"typescript": "^5.8.3",
54-
"vite": "npm:rolldown-vite@^6.3.21"
54+
"vite": "npm:rolldown-vite@^7.0.10"
5555
},
5656
"peerDependencies": {
5757
"react": "^19.1.0"

0 commit comments

Comments
 (0)