build: rollup: config external

main
Lei OT 4 months ago
parent 981018f465
commit cab2c11036

@ -4,19 +4,31 @@ const babel = require('@rollup/plugin-babel');
const fs = require('fs'); const fs = require('fs');
const path = require('path'); 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 // each file in utils
const utilsDir = path.join(__dirname, 'src', 'utils'); const utilsDir = path.join(__dirname, 'src', 'utils');
const utilsFiles = fs.readdirSync(utilsDir).filter((file) => file.endsWith('.js') && file !== 'index.js'); const utilsFiles = fs.readdirSync(utilsDir).filter((file) => file.endsWith('.js') && file !== 'index.js');
const srcDir = path.join(__dirname, 'src'); const srcDir = path.join(__dirname, 'src');
const hasIndexFiles = []; const hasIndexFiles = [];
const moduleFiles = [];
const srcItems = fs.readdirSync(srcDir); const srcItems = fs.readdirSync(srcDir);
srcItems.forEach((item) => { srcItems.forEach((item) => {
const itemPath = path.join(srcDir, item); const itemPath = path.join(srcDir, item);
if (fs.statSync(itemPath).isDirectory()) { 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) { if (_Files.length > 0) {
hasIndexFiles.push(item); hasIndexFiles.push(item);
moduleFiles.push(...generateEntries(_Files, item));
} }
} }
}); });
@ -25,7 +37,7 @@ hasIndexFiles.forEach(subDir => {
indexEntries.push(...generateEntries(['index.js'], subDir)); indexEntries.push(...generateEntries(['index.js'], subDir));
}); });
// src/index.js // src/index.js
indexEntries.push(...generateEntries(['index.js'])); // indexEntries.push(...generateEntries(['index.js']));
function generateEntries(files, parentDir) { function generateEntries(files, parentDir) {
// Create entries with both ESM and CJS outputs // Create entries with both ESM and CJS outputs
@ -41,7 +53,7 @@ function generateEntries(files, parentDir) {
format: 'es', format: 'es',
exports: 'named', exports: 'named',
}, },
external: [], external: isExternal, // Function to determine external dependencies
plugins: [ plugins: [
nodeResolve({ nodeResolve({
preferBuiltins: false, preferBuiltins: false,
@ -71,7 +83,7 @@ function generateEntries(files, parentDir) {
format: 'cjs', format: 'cjs',
exports: 'named', exports: 'named',
}, },
external: [], external: isExternal, // Function to determine external dependencies
plugins: [ plugins: [
nodeResolve({ nodeResolve({
preferBuiltins: false, preferBuiltins: false,
@ -100,5 +112,6 @@ function generateEntries(files, parentDir) {
module.exports = [ module.exports = [
// ...utilsEntries // ...utilsEntries
...generateEntries(utilsFiles, 'utils'), ...generateEntries(utilsFiles, 'utils'),
...indexEntries, // ...indexEntries,
...moduleFiles,
]; ];

Loading…
Cancel
Save