From 946843b6e19462e6d9c7f936c5930a2220077601 Mon Sep 17 00:00:00 2001 From: Antonio Giroz Date: Fri, 6 Dec 2024 18:02:01 +0100 Subject: [PATCH 1/2] chore: install defu dependency --- package.json | 1 + pnpm-lock.yaml | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/package.json b/package.json index 8111891..4f0914f 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "browserslist": "4.24.2", "commander": "12.1.0", "custom-element-vs-code-integration": "1.4.1", + "defu": "6.1.4", "glob": "11.0.0", "lightningcss": "1.28.1", "minify-html-literals": "1.3.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 404fc0e..e39cf3b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: custom-element-vs-code-integration: specifier: 1.4.1 version: 1.4.1(prettier@2.8.8) + defu: + specifier: 6.1.4 + version: 6.1.4 glob: specifier: 11.0.0 version: 11.0.0 @@ -568,6 +571,9 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + del@5.1.0: resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} engines: {node: '>=8'} @@ -1970,6 +1976,8 @@ snapshots: deepmerge@4.3.1: {} + defu@6.1.4: {} + del@5.1.0: dependencies: globby: 10.0.2 From df2978b1f34a9e6a5d43315458325685eea2f657 Mon Sep 17 00:00:00 2001 From: Antonio Giroz Date: Fri, 6 Dec 2024 18:02:30 +0100 Subject: [PATCH 2/2] feat: use custom user rollup config --- src/rollup.config.mjs | 80 +++++++++++++++++++++++-------------------- src/utils.mjs | 5 +-- 2 files changed, 46 insertions(+), 39 deletions(-) diff --git a/src/rollup.config.mjs b/src/rollup.config.mjs index a3797ef..0736446 100644 --- a/src/rollup.config.mjs +++ b/src/rollup.config.mjs @@ -1,3 +1,4 @@ +import defu from 'defu'; import typescript from '@rollup/plugin-typescript'; import nodeResolve from '@rollup/plugin-node-resolve'; import replace from '@rollup/plugin-replace'; @@ -17,49 +18,54 @@ import { getUserConfig } from './utils.mjs'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const config = await getUserConfig(); +const userConfig = await getUserConfig(); const cwd = process.cwd(); const project = { - externals: config.externals, + externals: userConfig.externals, packageJSON: fs.readJsonSync(path.resolve(cwd, './package.json')), - assets: config.assets.map(a => path.resolve(cwd, a)), - baseDir: path.resolve(cwd, config.baseDir), - outDir: path.resolve(cwd, config.outDir), - entryPoints: config.entryPoints.map(e => path.resolve(cwd, e)), - tsconfig: path.resolve(cwd, config.tsconfig), - customElementsManifestConfig: config.customElementsManifestConfig ? path.resolve(cwd, config.customElementsManifestConfig) : path.resolve(__dirname, './custom-elements-manifest.config.mjs'), + assets: userConfig.assets.map(a => path.resolve(cwd, a)), + baseDir: path.resolve(cwd, userConfig.baseDir), + outDir: path.resolve(cwd, userConfig.outDir), + entryPoints: userConfig.entryPoints.map(e => path.resolve(cwd, e)), + tsconfig: path.resolve(cwd, userConfig.tsconfig), + customElementsManifestConfig: userConfig.customElementsManifestConfig ? path.resolve(cwd, userConfig.customElementsManifestConfig) : path.resolve(__dirname, './custom-elements-manifest.config.mjs'), prod: process.env.BLUEPRINTUI_BUILD === 'production', - sourcemap: config.sourcemap + sourcemap: userConfig.sourcemap, + rollupOptions: userConfig.rollupOptions }; -export default [ - { - external: project.externals, - input: 'library-entry-points', - treeshake: false, - preserveEntrySignatures: 'strict', - output: { - format: 'esm', - dir: project.outDir, - preserveModules: true, - sourcemap: project.sourcemap, - sourcemapExcludeSources: true - }, - plugins: [ - project.prod ? cleanOutDir() : [], - css({ minify: project.prod }), - copyAssets(), - createEntrypoints(), - nodeResolve({ exportConditions: [project.prod ? 'production' : 'development'] }), - compileTypescript(), - project.prod ? [] : writeCache(project), - project.prod ? minifyHTML() : [], - project.prod ? minifyJavaScript() : [], - project.prod ? inlinePackageVersion() : [], - project.prod ? postClean(): [], - project.prod ? customElementsAnalyzer(project) : [] - ], +const defaultConfig = { + external: project.externals, + input: 'library-entry-points', + treeshake: false, + preserveEntrySignatures: 'strict', + output: { + format: 'esm', + dir: project.outDir, + preserveModules: true, + sourcemap: project.sourcemap, + sourcemapExcludeSources: true }, + plugins: [ + project.prod ? cleanOutDir() : [], + css({ minify: project.prod }), + copyAssets(), + createEntrypoints(), + nodeResolve({ exportConditions: [project.prod ? 'production' : 'development'] }), + compileTypescript(), + project.prod ? [] : writeCache(project), + project.prod ? minifyHTML() : [], + project.prod ? minifyJavaScript() : [], + project.prod ? inlinePackageVersion() : [], + project.prod ? postClean(): [], + project.prod ? customElementsAnalyzer(project) : [] + ], +}; + +const config = defu(project.rollupOptions, defaultConfig); + +export default [ + config, ]; function cleanOutDir() { @@ -67,7 +73,7 @@ function cleanOutDir() { } function copyAssets() { - return copy({ copyOnce: true, targets: project.assets.map(src => ({ src, dest: config.outDir }))}); + return copy({ copyOnce: true, targets: project.assets.map(src => ({ src, dest: userConfig.outDir }))}); } function createEntrypoints() { diff --git a/src/utils.mjs b/src/utils.mjs index 70a8578..b09cd2f 100644 --- a/src/utils.mjs +++ b/src/utils.mjs @@ -24,6 +24,7 @@ export async function getUserConfig() { entryPoints: ['./src/**/index.ts'], tsconfig: './tsconfig.lib.json', sourcemap: false, - ...userConfig.default?.library + ...userConfig.default?.library, + rollupOptions: userConfig.default?.rollupOptions || {}, }; -} \ No newline at end of file +}