From 8e1bb6d79a9197cb78613d460ceba1a0d34c16e4 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:57:03 +0100 Subject: [PATCH] generate an umbraco-package.json file containing the general importmap of the backoffice --- .../devops/build/create-umbraco-package.js | 23 +++++++++++++++++++ .../devops/importmap/index.js | 4 +++- .../devops/package/meta.js | 1 + .../devops/tsconfig/index.js | 1 + .../web-test-runner.config.mjs | 1 + 5 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/devops/build/create-umbraco-package.js diff --git a/src/Umbraco.Web.UI.Client/devops/build/create-umbraco-package.js b/src/Umbraco.Web.UI.Client/devops/build/create-umbraco-package.js new file mode 100644 index 0000000000..889550ba51 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/devops/build/create-umbraco-package.js @@ -0,0 +1,23 @@ +import { createImportMap } from "../importmap/index.js"; +import { writeFileSync, rmSync } from "fs"; +import { packageJsonName, packageJsonVersion } from "../package/index.js"; + +const srcDir = './dist-cms'; +const outputModuleList = `${srcDir}/umbraco-package.json`; +const importmap = createImportMap({ rootDir: '/umbraco/backoffice', additionalImports: {} }); + +const umbracoPackageJson = { + name: packageJsonName, + version: packageJsonVersion, + extensions: [], + importmap +}; + +try { + rmSync(outputModuleList, { force: true }); + writeFileSync(outputModuleList, JSON.stringify(umbracoPackageJson)); + console.log(`Wrote manifest to ${outputModuleList}`); +} catch (e) { + console.error(`Failed to write manifest to ${outputModuleList}`, e); + process.exit(1); +} diff --git a/src/Umbraco.Web.UI.Client/devops/importmap/index.js b/src/Umbraco.Web.UI.Client/devops/importmap/index.js index 94f5f64eee..b97682d3e6 100644 --- a/src/Umbraco.Web.UI.Client/devops/importmap/index.js +++ b/src/Umbraco.Web.UI.Client/devops/importmap/index.js @@ -12,7 +12,9 @@ export const createImportMap = (args) => { const moduleName = key.replace(/^\.\//, ''); // replace ./dist-cms with src and remove /index.js - const modulePath = value.replace(/^\.\/dist-cms/, args.rootDir).replace('.js', '.ts'); + let modulePath = value; + if (typeof args.rootDir !== 'undefined') modulePath = modulePath.replace(/^\.\/dist-cms/, args.rootDir); + if (args.replaceModuleExtensions) modulePath = modulePath.replace('.js', '.ts'); console.log('replacing', value, 'with', modulePath) const importAlias = `${packageJsonName}/${moduleName}`; diff --git a/src/Umbraco.Web.UI.Client/devops/package/meta.js b/src/Umbraco.Web.UI.Client/devops/package/meta.js index aab3837cb9..87a4f64a1c 100644 --- a/src/Umbraco.Web.UI.Client/devops/package/meta.js +++ b/src/Umbraco.Web.UI.Client/devops/package/meta.js @@ -3,4 +3,5 @@ import { readFileSync } from 'fs'; export const packageJsonPath = 'package.json'; export const packageJsonData = JSON.parse(readFileSync(packageJsonPath).toString()); export const packageJsonName = packageJsonData.name; +export const packageJsonVersion = packageJsonData.version; export const packageJsonExports = packageJsonData.exports; diff --git a/src/Umbraco.Web.UI.Client/devops/tsconfig/index.js b/src/Umbraco.Web.UI.Client/devops/tsconfig/index.js index 69ad7badaa..a02205ac65 100644 --- a/src/Umbraco.Web.UI.Client/devops/tsconfig/index.js +++ b/src/Umbraco.Web.UI.Client/devops/tsconfig/index.js @@ -42,6 +42,7 @@ const importmap = createImportMap({ additionalImports: { '@umbraco-cms/internal/test-utils': './utils/test-utils.ts', }, + replaceModuleExtensions: true, }); const paths = {}; diff --git a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs index 3a2e660553..3da2a3dc6f 100644 --- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs +++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs @@ -30,6 +30,7 @@ export default { additionalImports: { '@umbraco-cms/internal/test-utils': './utils/test-utils.ts', }, + replaceModuleExtensions: true, }), }, }),