add script to generate tsconfig from package.json
This commit is contained in:
committed by
Jacob Overgaard
parent
14f43cd5d3
commit
8ea1de0f26
67
src/Umbraco.Web.UI.Client/devops/tsconfig/index.js
Normal file
67
src/Umbraco.Web.UI.Client/devops/tsconfig/index.js
Normal file
@@ -0,0 +1,67 @@
|
||||
import { readFileSync, writeFileSync } from 'fs';
|
||||
import { format } from 'prettier';
|
||||
|
||||
const packageJsonPath = 'package.json';
|
||||
const packageJsonData = JSON.parse(readFileSync(packageJsonPath).toString());
|
||||
const packageJsonName = packageJsonData.name;
|
||||
const packageJsonExports = packageJsonData.exports;
|
||||
|
||||
const tsconfigPath = 'tsconfig.json';
|
||||
const tsconfigComment = `// Don't edit this file directly. It is generated by /scripts/generate-ts-config.js\n\n`;
|
||||
|
||||
const tsConfigBase = {
|
||||
compilerOptions: {
|
||||
module: 'esnext',
|
||||
target: 'ES2020',
|
||||
lib: ['es2020', 'dom', 'dom.iterable'],
|
||||
outDir: './types',
|
||||
allowSyntheticDefaultImports: true,
|
||||
experimentalDecorators: true,
|
||||
forceConsistentCasingInFileNames: true,
|
||||
useDefineForClassFields: false,
|
||||
baseUrl: '.',
|
||||
incremental: true,
|
||||
skipLibCheck: true,
|
||||
/* Bundler mode */
|
||||
moduleResolution: 'bundler',
|
||||
allowImportingTsExtensions: true,
|
||||
resolveJsonModule: true,
|
||||
isolatedModules: true,
|
||||
noEmit: true,
|
||||
/* Linting */
|
||||
strict: true,
|
||||
noFallthroughCasesInSwitch: true,
|
||||
noImplicitReturns: true,
|
||||
},
|
||||
include: ['src/**/*.ts', 'apps/**/*.ts', 'e2e/**/*.ts', 'index.ts', 'storybook/stories/**/*.ts', 'examples/**/*.ts'],
|
||||
references: [
|
||||
{
|
||||
path: './tsconfig.node.json',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const paths = {};
|
||||
|
||||
// Iterate over the exports in package.json
|
||||
for (const [key, value] of Object.entries(packageJsonExports || {})) {
|
||||
// remove leading ./
|
||||
if (value) {
|
||||
const moduleName = key.replace(/^\.\//, '');
|
||||
|
||||
// replace ./dist-cms with src and remove /index.js
|
||||
const modulePath = value.replace(/^\.\/dist-cms/, 'src').replace(/\/index.js$/, '');
|
||||
const importAlias = `${packageJsonName}/${moduleName}`;
|
||||
|
||||
paths[importAlias] = [modulePath];
|
||||
}
|
||||
}
|
||||
|
||||
tsConfigBase.compilerOptions.paths = paths;
|
||||
|
||||
const content = tsconfigComment + JSON.stringify(tsConfigBase, null, ' ');
|
||||
const formattedContent = await format(content, {
|
||||
parser: 'json',
|
||||
});
|
||||
|
||||
writeFileSync(tsconfigPath, formattedContent);
|
||||
@@ -131,7 +131,8 @@
|
||||
"test:watch": "web-test-runner --watch",
|
||||
"test": "web-test-runner --coverage",
|
||||
"wc-analyze:vscode": "wca **/*.element.ts --format vscode --outFile dist-cms/vscode-html-custom-data.json",
|
||||
"wc-analyze": "wca **/*.element.ts --outFile dist-cms/custom-elements.json"
|
||||
"wc-analyze": "wca **/*.element.ts --outFile dist-cms/custom-elements.json",
|
||||
"generate:tsconfig": "node ./devops/tsconfig/index.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.9 <21",
|
||||
|
||||
@@ -1,154 +1,156 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "esnext",
|
||||
"target": "ES2020",
|
||||
"lib": ["es2020", "dom", "dom.iterable"],
|
||||
"outDir": "./types",
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"experimentalDecorators": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"useDefineForClassFields": false,
|
||||
"baseUrl": ".",
|
||||
"incremental": true,
|
||||
"skipLibCheck": true,
|
||||
|
||||
/* Bundler mode */
|
||||
"moduleResolution": "bundler",
|
||||
"allowImportingTsExtensions": true,
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"noEmit": true,
|
||||
|
||||
/* Linting */
|
||||
"strict": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noImplicitReturns": true,
|
||||
|
||||
"paths": {
|
||||
// TODO: can we combine these of multiple tsconfigs so each package can hold their own?
|
||||
// APPS
|
||||
"@umbraco-cms/backoffice/app": ["src/apps/app"],
|
||||
|
||||
"@umbraco-cms/backoffice/external/lit": ["src/external/lit"],
|
||||
"@umbraco-cms/backoffice/external/lodash": ["src/external/lodash"],
|
||||
"@umbraco-cms/backoffice/external/monaco-editor": ["src/external/monaco-editor"],
|
||||
"@umbraco-cms/backoffice/external/openid": ["src/external/openid"],
|
||||
"@umbraco-cms/backoffice/external/router-slot": ["src/external/router-slot"],
|
||||
"@umbraco-cms/backoffice/external/rxjs": ["src/external/rxjs"],
|
||||
"@umbraco-cms/backoffice/external/tinymce": ["src/external/tinymce"],
|
||||
"@umbraco-cms/backoffice/external/uui": ["src/external/uui"],
|
||||
"@umbraco-cms/backoffice/external/uuid": ["src/external/uuid"],
|
||||
"@umbraco-cms/backoffice/external/dompurify": ["src/external/dompurify"],
|
||||
"@umbraco-cms/backoffice/external/marked": ["src/external/marked"],
|
||||
|
||||
"@umbraco-cms/backoffice/backend-api": ["src/external/backend-api"],
|
||||
"@umbraco-cms/backoffice/class-api": ["src/libs/class-api"],
|
||||
"@umbraco-cms/backoffice/context-api": ["src/libs/context-api"],
|
||||
"@umbraco-cms/backoffice/controller-api": ["src/libs/controller-api"],
|
||||
"@umbraco-cms/backoffice/element-api": ["src/libs/element-api"],
|
||||
"@umbraco-cms/backoffice/extension-api": ["src/libs/extension-api"],
|
||||
"@umbraco-cms/backoffice/localization-api": ["src/libs/localization-api"],
|
||||
"@umbraco-cms/backoffice/observable-api": ["src/libs/observable-api"],
|
||||
|
||||
// SHARED
|
||||
"@umbraco-cms/backoffice/auth": ["src/shared/auth"],
|
||||
"@umbraco-cms/backoffice/event": ["src/packages/core/event"],
|
||||
"@umbraco-cms/backoffice/icon": ["src/shared/icon-registry"],
|
||||
"@umbraco-cms/backoffice/models": ["src/shared/models"],
|
||||
"@umbraco-cms/backoffice/resources": ["src/shared/resources"],
|
||||
"@umbraco-cms/backoffice/router": ["src/shared/router"],
|
||||
"@umbraco-cms/backoffice/style": ["src/shared/style"],
|
||||
"@umbraco-cms/backoffice/utils": ["src/shared/utils"],
|
||||
|
||||
// CORE
|
||||
"@umbraco-cms/backoffice/action": ["src/packages/core/action"],
|
||||
"@umbraco-cms/backoffice/collection": ["src/packages/core/collection"],
|
||||
"@umbraco-cms/backoffice/components": ["src/packages/core/components"],
|
||||
"@umbraco-cms/backoffice/content-type": ["src/packages/core/content-type"],
|
||||
"@umbraco-cms/backoffice/debug": ["src/packages/core/debug"],
|
||||
"@umbraco-cms/backoffice/entity-action": ["src/packages/core/entity-action"],
|
||||
"@umbraco-cms/backoffice/entity-bulk-action": ["src/packages/core/entity-bulk-action"],
|
||||
"@umbraco-cms/backoffice/extension-registry": ["src/packages/core/extension-registry"],
|
||||
"@umbraco-cms/backoffice/server-file-system": ["src/packages/core/server-file-system"],
|
||||
"@umbraco-cms/backoffice/id": ["src/packages/core/id"],
|
||||
"@umbraco-cms/backoffice/localization": ["src/packages/core/localization"],
|
||||
"@umbraco-cms/backoffice/menu": ["src/packages/core/menu"],
|
||||
"@umbraco-cms/backoffice/modal": ["src/packages/core/modal"],
|
||||
"@umbraco-cms/backoffice/notification": ["src/packages/core/notification"],
|
||||
"@umbraco-cms/backoffice/picker-input": ["src/packages/core/picker-input"],
|
||||
"@umbraco-cms/backoffice/property": ["src/packages/core/property"],
|
||||
"@umbraco-cms/backoffice/property-action": ["src/packages/core/property-action"],
|
||||
"@umbraco-cms/backoffice/property-editor": ["src/packages/core/property-editor"],
|
||||
"@umbraco-cms/backoffice/section": ["src/packages/core/section"],
|
||||
"@umbraco-cms/backoffice/sorter": ["src/packages/core/sorter"],
|
||||
"@umbraco-cms/backoffice/store": ["src/packages/core/store"],
|
||||
"@umbraco-cms/backoffice/themes": ["src/packages/core/themes/index.ts"],
|
||||
"@umbraco-cms/backoffice/tree": ["src/packages/core/tree"],
|
||||
"@umbraco-cms/backoffice/variant": ["src/packages/core/variant"],
|
||||
"@umbraco-cms/backoffice/workspace": ["src/packages/core/workspace"],
|
||||
"@umbraco-cms/backoffice/culture": ["src/packages/core/culture"],
|
||||
"@umbraco-cms/backoffice/repository": ["src/packages/core/repository"],
|
||||
"@umbraco-cms/backoffice/temporary-file": ["src/packages/core/temporary-file"],
|
||||
|
||||
"@umbraco-cms/backoffice/data-type": ["./src/packages/core/data-type/index.ts"],
|
||||
"@umbraco-cms/backoffice/language": ["src/packages/language/index.ts"],
|
||||
"@umbraco-cms/backoffice/dynamic-root": ["./src/packages/dynamic-root/index.ts"],
|
||||
"@umbraco-cms/backoffice/logviewer": ["src/packages/log-viewer/index.ts"],
|
||||
"@umbraco-cms/backoffice/relation-types": ["src/packages/relations/relation-types/index.ts"],
|
||||
"@umbraco-cms/backoffice/relations": ["src/packages/relations/relations/index.ts"],
|
||||
"@umbraco-cms/backoffice/tags": ["./src/packages/tags/index.ts"],
|
||||
"@umbraco-cms/backoffice/static-file": ["./src/packages/static-file/index.ts"],
|
||||
|
||||
"@umbraco-cms/backoffice/block": ["./src/packages/block/index.ts"],
|
||||
"@umbraco-cms/backoffice/audit-log": ["src/packages/audit-log/index.ts"],
|
||||
"@umbraco-cms/backoffice/dictionary": ["src/packages/dictionary/index.ts"],
|
||||
|
||||
// DOCUMENT MANAGEMENT
|
||||
"@umbraco-cms/backoffice/document": ["./src/packages/documents/documents/index.ts"],
|
||||
"@umbraco-cms/backoffice/document-blueprint": ["./src/packages/documents/document-blueprints/index.ts"],
|
||||
"@umbraco-cms/backoffice/document-type": ["./src/packages/documents/document-types/index.ts"],
|
||||
|
||||
// MEDIA MANAGEMENT
|
||||
"@umbraco-cms/backoffice/media": ["./src/packages/media/media/index.ts"],
|
||||
"@umbraco-cms/backoffice/media-type": ["./src/packages/media/media-types/index.ts"],
|
||||
|
||||
// MEMBER MANAGEMENT
|
||||
"@umbraco-cms/backoffice/member": ["./src/packages/members/members/index.ts"],
|
||||
"@umbraco-cms/backoffice/member-group": ["./src/packages/members/member-groups/index.ts"],
|
||||
"@umbraco-cms/backoffice/member-type": ["./src/packages/members/member-types/index.ts"],
|
||||
|
||||
// PACKAGE MANAGEMENT
|
||||
"@umbraco-cms/backoffice/package": ["./src/packages/packages/package/index.ts"],
|
||||
|
||||
// USER MANAGEMENT
|
||||
"@umbraco-cms/backoffice/user-group": ["src/packages/user/user-group"],
|
||||
"@umbraco-cms/backoffice/current-user": ["src/packages/user/current-user"],
|
||||
"@umbraco-cms/backoffice/user": ["src/packages/user/user"],
|
||||
"@umbraco-cms/backoffice/user-permission": ["src/packages/user/user-permission"],
|
||||
|
||||
// TEMPLATING
|
||||
"@umbraco-cms/backoffice/code-editor": ["src/packages/templating/code-editor"],
|
||||
"@umbraco-cms/backoffice/partial-view": ["./src/packages/templating/partial-views/index.ts"],
|
||||
"@umbraco-cms/backoffice/stylesheet": ["./src/packages/templating/stylesheets/index.ts"],
|
||||
"@umbraco-cms/backoffice/template": ["./src/packages/templating/templates/index.ts"],
|
||||
|
||||
"@umbraco-cms/backoffice/css": ["src/shared/css/custom-properties.css"],
|
||||
|
||||
"@umbraco-cms/internal/lit-element": ["src/shared/lit-element"],
|
||||
"@umbraco-cms/internal/test-utils": ["utils/test-utils.ts"]
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts",
|
||||
"apps/**/*.ts",
|
||||
"e2e/**/*.ts",
|
||||
"index.ts",
|
||||
"storybook/stories/**/*.ts",
|
||||
"examples/**/*.ts"
|
||||
],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.node.json"
|
||||
}
|
||||
]
|
||||
"compilerOptions": {
|
||||
"rootDir": "./",
|
||||
"module": "esnext",
|
||||
"target": "ES2020",
|
||||
"lib": ["es2020", "dom", "dom.iterable"],
|
||||
"outDir": "./types",
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"experimentalDecorators": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"useDefineForClassFields": false,
|
||||
"baseUrl": ".",
|
||||
"incremental": true,
|
||||
"skipLibCheck": true,
|
||||
"moduleResolution": "bundler",
|
||||
"allowImportingTsExtensions": true,
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"noEmit": true,
|
||||
"strict": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noImplicitReturns": true,
|
||||
"paths": {
|
||||
"@umbraco-cms/backoffice/app": ["src/apps/app"],
|
||||
"@umbraco-cms/backoffice/class-api": ["src/libs/class-api"],
|
||||
"@umbraco-cms/backoffice/context-api": ["src/libs/context-api"],
|
||||
"@umbraco-cms/backoffice/controller-api": ["src/libs/controller-api"],
|
||||
"@umbraco-cms/backoffice/element-api": ["src/libs/element-api"],
|
||||
"@umbraco-cms/backoffice/extension-api": ["src/libs/extension-api"],
|
||||
"@umbraco-cms/backoffice/localization-api": ["src/libs/localization-api"],
|
||||
"@umbraco-cms/backoffice/observable-api": ["src/libs/observable-api"],
|
||||
"@umbraco-cms/backoffice/auth": ["src/shared/auth"],
|
||||
"@umbraco-cms/backoffice/event": ["src/packages/core/event"],
|
||||
"@umbraco-cms/backoffice/icon": ["src/shared/icon"],
|
||||
"@umbraco-cms/backoffice/models": ["src/shared/models"],
|
||||
"@umbraco-cms/backoffice/resources": ["src/shared/resources"],
|
||||
"@umbraco-cms/backoffice/router": ["src/shared/router"],
|
||||
"@umbraco-cms/backoffice/style": ["src/shared/style"],
|
||||
"@umbraco-cms/backoffice/utils": ["src/shared/utils"],
|
||||
"@umbraco-cms/backoffice/action": ["src/packages/core/action"],
|
||||
"@umbraco-cms/backoffice/collection": ["src/packages/core/collection"],
|
||||
"@umbraco-cms/backoffice/components": ["src/packages/core/components"],
|
||||
"@umbraco-cms/backoffice/content-type": [
|
||||
"src/packages/core/content-type"
|
||||
],
|
||||
"@umbraco-cms/backoffice/culture": ["src/packages/core/culture"],
|
||||
"@umbraco-cms/backoffice/data-type": ["src/packages/core/data-type"],
|
||||
"@umbraco-cms/backoffice/debug": ["src/packages/core/debug"],
|
||||
"@umbraco-cms/backoffice/entity-action": [
|
||||
"src/packages/core/entity-action"
|
||||
],
|
||||
"@umbraco-cms/backoffice/entity-bulk-action": [
|
||||
"src/packages/core/entity-bulk-action"
|
||||
],
|
||||
"@umbraco-cms/backoffice/extension-registry": [
|
||||
"src/packages/core/extension-registry"
|
||||
],
|
||||
"@umbraco-cms/backoffice/server-file-system": [
|
||||
"src/packages/core/server-file-system"
|
||||
],
|
||||
"@umbraco-cms/backoffice/id": ["src/packages/core/id"],
|
||||
"@umbraco-cms/backoffice/localization": [
|
||||
"src/packages/core/localization"
|
||||
],
|
||||
"@umbraco-cms/backoffice/menu": ["src/packages/core/menu"],
|
||||
"@umbraco-cms/backoffice/modal": ["src/packages/core/modal"],
|
||||
"@umbraco-cms/backoffice/notification": [
|
||||
"src/packages/core/notification"
|
||||
],
|
||||
"@umbraco-cms/backoffice/picker-input": [
|
||||
"src/packages/core/picker-input"
|
||||
],
|
||||
"@umbraco-cms/backoffice/property": ["src/packages/core/property"],
|
||||
"@umbraco-cms/backoffice/property-action": [
|
||||
"src/packages/core/property-action"
|
||||
],
|
||||
"@umbraco-cms/backoffice/property-editor": [
|
||||
"src/packages/core/property-editor"
|
||||
],
|
||||
"@umbraco-cms/backoffice/section": ["src/packages/core/section"],
|
||||
"@umbraco-cms/backoffice/sorter": ["src/packages/core/sorter"],
|
||||
"@umbraco-cms/backoffice/store": ["src/packages/core/store"],
|
||||
"@umbraco-cms/backoffice/themes": ["src/packages/core/themes"],
|
||||
"@umbraco-cms/backoffice/tree": ["src/packages/core/tree"],
|
||||
"@umbraco-cms/backoffice/variant": ["src/packages/core/variant"],
|
||||
"@umbraco-cms/backoffice/workspace": ["src/packages/core/workspace"],
|
||||
"@umbraco-cms/backoffice/repository": ["src/packages/core/repository"],
|
||||
"@umbraco-cms/backoffice/temporary-file": [
|
||||
"src/packages/core/temporary-file"
|
||||
],
|
||||
"@umbraco-cms/backoffice/block": ["src/packages/block"],
|
||||
"@umbraco-cms/backoffice/audit-log": ["src/packages/audit-log"],
|
||||
"@umbraco-cms/backoffice/dictionary": ["src/packages/dictionary"],
|
||||
"@umbraco-cms/backoffice/document": ["src/packages/documents/documents"],
|
||||
"@umbraco-cms/backoffice/document-blueprint": [
|
||||
"src/packages/documents/document-blueprints"
|
||||
],
|
||||
"@umbraco-cms/backoffice/document-type": [
|
||||
"src/packages/documents/document-types"
|
||||
],
|
||||
"@umbraco-cms/backoffice/media": ["src/packages/media/media"],
|
||||
"@umbraco-cms/backoffice/media-type": ["src/packages/media/media-types"],
|
||||
"@umbraco-cms/backoffice/member": ["src/packages/members/members"],
|
||||
"@umbraco-cms/backoffice/member-group": [
|
||||
"src/packages/members/member-groups"
|
||||
],
|
||||
"@umbraco-cms/backoffice/member-type": [
|
||||
"src/packages/members/member-types"
|
||||
],
|
||||
"@umbraco-cms/backoffice/package": ["src/packages/packages/package"],
|
||||
"@umbraco-cms/backoffice/language": ["src/packages/language"],
|
||||
"@umbraco-cms/backoffice/dynamic-root": ["src/packages/dynamic-root"],
|
||||
"@umbraco-cms/backoffice/logviewer": ["src/packages/settings/logviewer"],
|
||||
"@umbraco-cms/backoffice/relation-type": [
|
||||
"src/packages/relations/relation-types"
|
||||
],
|
||||
"@umbraco-cms/backoffice/relations": ["src/packages/relations/relations"],
|
||||
"@umbraco-cms/backoffice/tags": ["src/packages/tags"],
|
||||
"@umbraco-cms/backoffice/static-file": ["src/packages/static-file"],
|
||||
"@umbraco-cms/backoffice/partial-view": [
|
||||
"src/packages/templating/partial-views"
|
||||
],
|
||||
"@umbraco-cms/backoffice/stylesheet": [
|
||||
"src/packages/templating/stylesheets"
|
||||
],
|
||||
"@umbraco-cms/backoffice/template": ["src/packages/templating/templates"],
|
||||
"@umbraco-cms/backoffice/user-group": ["src/packages/user/user-group"],
|
||||
"@umbraco-cms/backoffice/current-user": [
|
||||
"src/packages/user/current-user"
|
||||
],
|
||||
"@umbraco-cms/backoffice/user": ["src/packages/user/user"],
|
||||
"@umbraco-cms/backoffice/user-permission": [
|
||||
"src/packages/user/user-permission"
|
||||
],
|
||||
"@umbraco-cms/backoffice/code-editor": [
|
||||
"src/packages/templating/code-editor"
|
||||
],
|
||||
"@umbraco-cms/backoffice/external/*": ["src/external/*"],
|
||||
"@umbraco-cms/backoffice/examples/*": ["./examples/*"],
|
||||
"@umbraco-cms/backoffice/examples": ["./examples"]
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts",
|
||||
"apps/**/*.ts",
|
||||
"e2e/**/*.ts",
|
||||
"index.ts",
|
||||
"storybook/stories/**/*.ts",
|
||||
"examples/**/*.ts"
|
||||
],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.node.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user