diff --git a/src/Umbraco.Web.UI.Client/devops/build/copy-packages.mjs b/src/Umbraco.Web.UI.Client/devops/build/copy-packages.mjs new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/devops/build/copy-packages.mjs @@ -0,0 +1 @@ + diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index f7b12858d9..18c424a294 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -55,7 +55,9 @@ "new-extension": "plop --plopfile ./devops/plop/plop.js", "compile": "tsc", "check": "npm run lint && npm run compile && npm run build-storybook", - "build:packages": "rollup -c rollup-packages.config.js" + "build:packages": "rollup -c ./src/packages/rollup.config.js", + "build:apps": "rollup -c ./src/apps/rollup.config.js", + "copy": "node ./devops/build/copy-packages.mjs" }, "engines": { "node": ">=18.14 <19", diff --git a/src/Umbraco.Web.UI.Client/src/apps/rollup.config.js b/src/Umbraco.Web.UI.Client/src/apps/rollup.config.js new file mode 100644 index 0000000000..b7a7db0a6c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/apps/rollup.config.js @@ -0,0 +1,27 @@ +import esbuild from 'rollup-plugin-esbuild'; +import pluginJson from '@rollup/plugin-json'; +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import { readdirSync, lstatSync } from 'fs'; + +const exclude = []; +const apps = readdirSync('./src/apps').filter((corePackage) => lstatSync(`src/apps/${corePackage}`).isDirectory()); +const allowedApps = apps.filter((corePackage) => !exclude.includes(corePackage)); + +export default allowedApps + .map((app) => { + /** @type {import('rollup').RollupOptions[]} */ + return [ + { + input: `./src/apps/${app}/index.ts`, + external: [/^@umbraco-cms\//], + output: { + dir: `./src/apps/${app}/dist`, + format: 'es', + preserveModules: true, + preserveModulesRoot: `./src/apps/${app}`, + }, + plugins: [nodeResolve(), pluginJson(), esbuild()], + }, + ]; + }) + .flat(); diff --git a/src/Umbraco.Web.UI.Client/rollup-packages.config.js b/src/Umbraco.Web.UI.Client/src/packages/rollup.config.js similarity index 64% rename from src/Umbraco.Web.UI.Client/rollup-packages.config.js rename to src/Umbraco.Web.UI.Client/src/packages/rollup.config.js index ff40b904ef..7585c9797d 100644 --- a/src/Umbraco.Web.UI.Client/rollup-packages.config.js +++ b/src/Umbraco.Web.UI.Client/src/packages/rollup.config.js @@ -3,10 +3,10 @@ import pluginJson from '@rollup/plugin-json'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import { readdirSync, lstatSync } from 'fs'; -const exclude = ['core', 'users']; +const exclude = []; -const corePackages = readdirSync('./src/backoffice').filter((corePackage) => - lstatSync(`src/backoffice/${corePackage}`).isDirectory() +const corePackages = readdirSync('./src/packages').filter((corePackage) => + lstatSync(`src/packages/${corePackage}`).isDirectory() ); const allowedPackages = corePackages.filter((corePackage) => !exclude.includes(corePackage)); @@ -16,13 +16,13 @@ export default allowedPackages /** @type {import('rollup').RollupOptions[]} */ return [ { - input: `./src/backoffice/${corePackage}/index.ts`, + input: `./src/packages/${corePackage}/index.ts`, external: [/^@umbraco-cms\//], output: { - dir: `./src/backoffice/${corePackage}/dist`, + dir: `./src/packages/${corePackage}/dist`, format: 'es', preserveModules: true, - preserveModulesRoot: `./src/backoffice/${corePackage}`, + preserveModulesRoot: `./src/packages/${corePackage}`, }, plugins: [nodeResolve(), pluginJson(), esbuild()], },