From cab2c1103674bea205f1fdf45fae82047269006a Mon Sep 17 00:00:00 2001 From: Lei OT Date: Mon, 29 Dec 2025 14:11:23 +0800 Subject: [PATCH] build: rollup: config external --- rollup.config.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/rollup.config.js b/rollup.config.js index 977dc88..d301be2 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -4,19 +4,31 @@ const babel = require('@rollup/plugin-babel'); const fs = require('fs'); const path = require('path'); +// Define external dependencies (e.g., react, react-dom, etc.) +// These will not be bundled but resolved at runtime +const externalDeps = ['react', 'react-dom']; // Add more as needed + +// Check if a module is external +const isExternal = (id) => { + // Check if it's a node module (not a relative import) + return externalDeps.some(dep => id === dep || id.startsWith(`${dep}/`)); +}; + // each file in utils const utilsDir = path.join(__dirname, 'src', 'utils'); const utilsFiles = fs.readdirSync(utilsDir).filter((file) => file.endsWith('.js') && file !== 'index.js'); const srcDir = path.join(__dirname, 'src'); const hasIndexFiles = []; +const moduleFiles = []; const srcItems = fs.readdirSync(srcDir); srcItems.forEach((item) => { const itemPath = path.join(srcDir, item); if (fs.statSync(itemPath).isDirectory()) { - const _Files = fs.readdirSync(itemPath).filter((file) => file.endsWith('.js') && file === 'index.js'); + const _Files = fs.readdirSync(itemPath).filter((file) => file.endsWith('.js') && file !== 'index.js'); if (_Files.length > 0) { hasIndexFiles.push(item); + moduleFiles.push(...generateEntries(_Files, item)); } } }); @@ -25,7 +37,7 @@ hasIndexFiles.forEach(subDir => { indexEntries.push(...generateEntries(['index.js'], subDir)); }); // src/index.js -indexEntries.push(...generateEntries(['index.js'])); +// indexEntries.push(...generateEntries(['index.js'])); function generateEntries(files, parentDir) { // Create entries with both ESM and CJS outputs @@ -41,7 +53,7 @@ function generateEntries(files, parentDir) { format: 'es', exports: 'named', }, - external: [], + external: isExternal, // Function to determine external dependencies plugins: [ nodeResolve({ preferBuiltins: false, @@ -71,7 +83,7 @@ function generateEntries(files, parentDir) { format: 'cjs', exports: 'named', }, - external: [], + external: isExternal, // Function to determine external dependencies plugins: [ nodeResolve({ preferBuiltins: false, @@ -100,5 +112,6 @@ function generateEntries(files, parentDir) { module.exports = [ // ...utilsEntries ...generateEntries(utilsFiles, 'utils'), - ...indexEntries, + // ...indexEntries, + ...moduleFiles, ];