From 43b1d97f1c598bead89a776baeec8a42fc07c69b Mon Sep 17 00:00:00 2001 From: paanSinghCoder Date: Tue, 16 Dec 2025 15:17:40 +0530 Subject: [PATCH 1/8] perf: reduce package size --- .gitignore | 3 +++ packages/raystack/.npmignore | 12 +++++++++++ packages/raystack/rollup.config.mjs | 31 ++++++++++++++++++++++++++--- 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 packages/raystack/.npmignore diff --git a/.gitignore b/.gitignore index a0c91f387..8e5cfef62 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,6 @@ yarn-error.log* # vscode plugin *.vsix + +# npm pack artifacts +*.tgz diff --git a/packages/raystack/.npmignore b/packages/raystack/.npmignore new file mode 100644 index 000000000..6d3b0bcea --- /dev/null +++ b/packages/raystack/.npmignore @@ -0,0 +1,12 @@ +# Exclude source maps +dist/**/*.map +dist/**/*.d.ts.map +# Exclude test files +dist/**/__tests__/** +# Exclude dev files +dist/vitest.setup.* +dist/figma/** +# Exclude bundled dependencies (shouldn't exist after externalizing) +dist/node_modules/** +dist/_virtual/** + diff --git a/packages/raystack/rollup.config.mjs b/packages/raystack/rollup.config.mjs index b14cf77be..22b0992ee 100644 --- a/packages/raystack/rollup.config.mjs +++ b/packages/raystack/rollup.config.mjs @@ -78,6 +78,31 @@ const configs = [ } ]; +// Externalize all dependencies and peer dependencies +// This prevents bundling dependencies and reduces package size significantly +const external = [ + 'react', + 'react-dom', + 'react-dom/client', + 'react/jsx-runtime', + // Add new external dependencies from package.json here as well + '@ariakit/react', + '@radix-ui/react-icons', + '@tanstack/match-sorter-utils', + '@tanstack/react-table', + '@tanstack/table-core', + 'class-variance-authority', + 'cmdk', + 'color', + 'dayjs', + 'prism-react-renderer', + 'radix-ui', + 'react-day-picker', + 'sonner', + /^dayjs\/plugin\/.*/, + /^@radix-ui\/.*/ +]; + const rollupConfig = configs.map(conf => { return { input: conf.inputPath + '/index.tsx', @@ -85,7 +110,7 @@ const rollupConfig = configs.map(conf => { { dir: conf.outputPath, format: 'es', - sourcemap: true, + sourcemap: false, exports: 'named', preserveModules: true, preserveModulesRoot: conf.inputPath @@ -93,14 +118,14 @@ const rollupConfig = configs.map(conf => { { dir: conf.outputPath, format: 'cjs', - sourcemap: true, + sourcemap: false, exports: 'named', entryFileNames: '[name].cjs', preserveModules: true, preserveModulesRoot: conf.inputPath } ], - external: ['react', 'react-dom', 'react-dom/client', 'react/jsx-runtime'], + external, plugins: createPlugins({ rootDir: conf.inputPath, declarationDir: conf.outputPath From 583ec3c78d2a976bfbab86102097093aae2acd6c Mon Sep 17 00:00:00 2001 From: paanSinghCoder Date: Tue, 16 Dec 2025 16:00:21 +0530 Subject: [PATCH 2/8] chore: remove comment: --- packages/raystack/.npmignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/raystack/.npmignore b/packages/raystack/.npmignore index 6d3b0bcea..f94bdd923 100644 --- a/packages/raystack/.npmignore +++ b/packages/raystack/.npmignore @@ -6,7 +6,7 @@ dist/**/__tests__/** # Exclude dev files dist/vitest.setup.* dist/figma/** -# Exclude bundled dependencies (shouldn't exist after externalizing) +# Exclude bundled dependencies dist/node_modules/** dist/_virtual/** From 6bef388b066b364944319b54d21c3d382e277df7 Mon Sep 17 00:00:00 2001 From: paanSinghCoder Date: Fri, 19 Dec 2025 15:22:21 +0530 Subject: [PATCH 3/8] chore: enable source map --- packages/raystack/rollup.config.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/raystack/rollup.config.mjs b/packages/raystack/rollup.config.mjs index 22b0992ee..031ab1caf 100644 --- a/packages/raystack/rollup.config.mjs +++ b/packages/raystack/rollup.config.mjs @@ -110,7 +110,7 @@ const rollupConfig = configs.map(conf => { { dir: conf.outputPath, format: 'es', - sourcemap: false, + sourcemap: true, exports: 'named', preserveModules: true, preserveModulesRoot: conf.inputPath @@ -118,7 +118,7 @@ const rollupConfig = configs.map(conf => { { dir: conf.outputPath, format: 'cjs', - sourcemap: false, + sourcemap: true, exports: 'named', entryFileNames: '[name].cjs', preserveModules: true, From 03267447632f5215fb7d6b631536155593d8c1ca Mon Sep 17 00:00:00 2001 From: paanSinghCoder Date: Fri, 19 Dec 2025 15:30:26 +0530 Subject: [PATCH 4/8] chore: remove npm ignore file --- packages/raystack/.npmignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/raystack/.npmignore b/packages/raystack/.npmignore index f94bdd923..5984d0d8c 100644 --- a/packages/raystack/.npmignore +++ b/packages/raystack/.npmignore @@ -1,6 +1,3 @@ -# Exclude source maps -dist/**/*.map -dist/**/*.d.ts.map # Exclude test files dist/**/__tests__/** # Exclude dev files From e3e91d655a2e4c45ad777266b3ed6f91fdf12585 Mon Sep 17 00:00:00 2001 From: paanSinghCoder Date: Tue, 6 Jan 2026 15:37:57 +0530 Subject: [PATCH 5/8] feat: add plugin to externalise the deps --- packages/raystack/package.json | 1 + packages/raystack/rollup.config.mjs | 42 +++++++++++------------------ pnpm-lock.yaml | 15 +++++++++++ 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/packages/raystack/package.json b/packages/raystack/package.json index b3d11d79d..0931f358b 100644 --- a/packages/raystack/package.json +++ b/packages/raystack/package.json @@ -95,6 +95,7 @@ "react": "^19.0.1", "react-dom": "^19.0.1", "rollup": "^3.25.1", + "rollup-plugin-node-externals": "^5.1.0", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-preserve-directives": "^0.4.0", "rollup-plugin-tsconfig-paths": "^1.5.2", diff --git a/packages/raystack/rollup.config.mjs b/packages/raystack/rollup.config.mjs index 031ab1caf..3e2aeccfe 100644 --- a/packages/raystack/rollup.config.mjs +++ b/packages/raystack/rollup.config.mjs @@ -4,11 +4,27 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import typescript from '@rollup/plugin-typescript'; import svgr from '@svgr/rollup'; import postcssImport from 'postcss-import'; +import { nodeExternals } from 'rollup-plugin-node-externals'; import postcss from 'rollup-plugin-postcss'; import preserveDirectives from 'rollup-plugin-preserve-directives'; import tsconfigPaths from 'rollup-plugin-tsconfig-paths'; const createPlugins = ({ rootDir, declarationDir }) => [ + // Externalize all dependencies and peer dependencies + // This must be placed before nodeResolve() to work correctly + nodeExternals({ + deps: true, // Externalize all dependencies + devDeps: false, // Don't externalize devDependencies + peerDeps: true, // Externalize peerDependencies (React, React-DOM) + optDeps: true, // Externalize optionalDependencies + // Include React subpaths and regex patterns that need to be externalized + include: [ + 'react/jsx-runtime', + 'react-dom/client', + /^dayjs\/plugin\/.*/, + /^@radix-ui\/.*/ + ] + }), nodeResolve(), commonjs(), svgr({ @@ -78,31 +94,6 @@ const configs = [ } ]; -// Externalize all dependencies and peer dependencies -// This prevents bundling dependencies and reduces package size significantly -const external = [ - 'react', - 'react-dom', - 'react-dom/client', - 'react/jsx-runtime', - // Add new external dependencies from package.json here as well - '@ariakit/react', - '@radix-ui/react-icons', - '@tanstack/match-sorter-utils', - '@tanstack/react-table', - '@tanstack/table-core', - 'class-variance-authority', - 'cmdk', - 'color', - 'dayjs', - 'prism-react-renderer', - 'radix-ui', - 'react-day-picker', - 'sonner', - /^dayjs\/plugin\/.*/, - /^@radix-ui\/.*/ -]; - const rollupConfig = configs.map(conf => { return { input: conf.inputPath + '/index.tsx', @@ -125,7 +116,6 @@ const rollupConfig = configs.map(conf => { preserveModulesRoot: conf.inputPath } ], - external, plugins: createPlugins({ rootDir: conf.inputPath, declarationDir: conf.outputPath diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c69f9debe..60be27994 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -303,6 +303,9 @@ importers: rollup: specifier: ^3.25.1 version: 3.25.1 + rollup-plugin-node-externals: + specifier: ^5.1.0 + version: 5.1.3(rollup@3.25.1) rollup-plugin-postcss: specifier: ^4.0.2 version: 4.0.2(postcss@8.4.24)(ts-node@10.9.2(@swc/core@1.11.21)(@types/node@24.10.0)(typescript@5.4.3)) @@ -8617,6 +8620,12 @@ packages: engines: {node: 20 || >=22} hasBin: true + rollup-plugin-node-externals@5.1.3: + resolution: {integrity: sha512-Q3VMjsn39r0/mjKrX++rFlC7kwL7YZdScdyU7BEo+PrEremal3mnol/1X+wQUU++7NeqC1ZNAeRYnHGtsTu9GQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.60.0 || ^3.0.0 + rollup-plugin-postcss@4.0.2: resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} engines: {node: '>=10'} @@ -11593,6 +11602,8 @@ snapshots: '@parcel/logger': 2.12.0 '@parcel/utils': 2.12.0 lmdb: 2.8.5 + transitivePeerDependencies: + - '@swc/helpers' '@parcel/cache@2.9.2(@parcel/core@2.12.0)': dependencies: @@ -20534,6 +20545,10 @@ snapshots: glob: 11.0.3 package-json-from-dist: 1.0.0 + rollup-plugin-node-externals@5.1.3(rollup@3.25.1): + dependencies: + rollup: 3.25.1 + rollup-plugin-postcss@4.0.2(postcss@8.4.24)(ts-node@10.9.2(@swc/core@1.11.21)(@types/node@24.10.0)(typescript@5.4.3)): dependencies: chalk: 4.1.2 From 0bb3c6a815988610c74800473cec058363c4f0d9 Mon Sep 17 00:00:00 2001 From: paanSinghCoder Date: Tue, 6 Jan 2026 15:38:42 +0530 Subject: [PATCH 6/8] chore: remove comment --- packages/raystack/rollup.config.mjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/raystack/rollup.config.mjs b/packages/raystack/rollup.config.mjs index 3e2aeccfe..c126edd88 100644 --- a/packages/raystack/rollup.config.mjs +++ b/packages/raystack/rollup.config.mjs @@ -13,10 +13,10 @@ const createPlugins = ({ rootDir, declarationDir }) => [ // Externalize all dependencies and peer dependencies // This must be placed before nodeResolve() to work correctly nodeExternals({ - deps: true, // Externalize all dependencies - devDeps: false, // Don't externalize devDependencies - peerDeps: true, // Externalize peerDependencies (React, React-DOM) - optDeps: true, // Externalize optionalDependencies + deps: true, + devDeps: false, + peerDeps: true, + optDeps: true, // Include React subpaths and regex patterns that need to be externalized include: [ 'react/jsx-runtime', From db533e6f7ee1f44138cc5361fb20f2f9260ea38b Mon Sep 17 00:00:00 2001 From: paanSinghCoder Date: Tue, 6 Jan 2026 15:44:38 +0530 Subject: [PATCH 7/8] chore: add comment --- packages/raystack/rollup.config.mjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/raystack/rollup.config.mjs b/packages/raystack/rollup.config.mjs index c126edd88..52f144055 100644 --- a/packages/raystack/rollup.config.mjs +++ b/packages/raystack/rollup.config.mjs @@ -4,7 +4,7 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import typescript from '@rollup/plugin-typescript'; import svgr from '@svgr/rollup'; import postcssImport from 'postcss-import'; -import { nodeExternals } from 'rollup-plugin-node-externals'; +import nodeExternals from 'rollup-plugin-node-externals'; import postcss from 'rollup-plugin-postcss'; import preserveDirectives from 'rollup-plugin-preserve-directives'; import tsconfigPaths from 'rollup-plugin-tsconfig-paths'; @@ -17,7 +17,8 @@ const createPlugins = ({ rootDir, declarationDir }) => [ devDeps: false, peerDeps: true, optDeps: true, - // Include React subpaths and regex patterns that need to be externalized + // Note: Include deps with subpaths that need to be externalized in include array. + // https://github.com/Septh/rollup-plugin-node-externals?tab=readme-ov-file#1-this-plugin-is-smart include: [ 'react/jsx-runtime', 'react-dom/client', From 91c0bb9f238379bab6f64138081688ebb2713fff Mon Sep 17 00:00:00 2001 From: paanSinghCoder Date: Wed, 7 Jan 2026 13:11:01 +0530 Subject: [PATCH 8/8] chore: update .npmignore to refine exclusion patterns --- packages/raystack/.npmignore | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/raystack/.npmignore b/packages/raystack/.npmignore index 5984d0d8c..b44827017 100644 --- a/packages/raystack/.npmignore +++ b/packages/raystack/.npmignore @@ -1,9 +1,13 @@ # Exclude test files -dist/**/__tests__/** -# Exclude dev files -dist/vitest.setup.* -dist/figma/** +**/__tests__/ +**/__tests__/** +# Exclude dev files +vitest.setup.* +figma/ +figma/** # Exclude bundled dependencies -dist/node_modules/** -dist/_virtual/** +node_modules/ +node_modules/** +_virtual/ +_virtual/**