refactor(core-extensions): Use roolup to inline internal modules

This commit is contained in:
T. R. Bernstein
2025-04-21 20:46:30 +02:00
parent 1ba1659600
commit 1b93170cde
5 changed files with 480 additions and 51 deletions

View File

@@ -7,14 +7,21 @@
"dist"
],
"scripts": {
"build": "tsc",
"build": "rollup -c && node scripts/generate-exports.js",
"prepublish": "pnpm build"
},
"publishConfig": {
"access": "public"
},
"devDependencies": {
"@rollup/plugin-alias": "^5.1.1",
"@rollup/plugin-node-resolve": "^16.0.1",
"@rollup/plugin-typescript": "^12.1.2",
"@tabshift/typescript-config": "workspace:",
"fast-glob": "^3.3.3",
"rollup": "^4.40.0",
"rollup-plugin-dts": "^6.2.1",
"tslib": "^2.8.1",
"typescript": "latest"
},
"author": "T. R. Bernstein <ljspkgs01-project@tabshift.dev>",

View File

@@ -0,0 +1,53 @@
import glob from 'fast-glob'
import alias from '@rollup/plugin-alias'
import typescript from '@rollup/plugin-typescript'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import dts from 'rollup-plugin-dts'
const srcFolder = decodeURI(new URL('./src/', import.meta.url).pathname)
const entryFiles = glob.sync('src/**/!(*.test).ts', {
ignore: ['src/internal/**']
})
const entries = entryFiles.map((file) => {
const input = file
const output = file.replace(/^src\//, 'dist/').replace(/\.ts$/, '.js')
return { input, output }
})
export default [
...entries.map(({ input, output }) => ({
input,
output: {
file: output,
format: 'esm',
sourcemap: false
},
plugins: [
alias({
entries: [{ find: '@', replacement: srcFolder }]
}),
nodeResolve(),
typescript({
tsconfig: './tsconfig.json',
sourceMap: false
})
]
})),
...entries.map(({ input, output }) => ({
input,
output: {
file: output.replace(/\.js$/, '.d.ts'),
format: 'esm'
},
plugins: [
alias({
entries: [{ find: '@', replacement: srcFolder }]
}),
dts()
]
}))
]

View File

@@ -14,9 +14,14 @@ function walk(dir) {
for (const entry of entries) {
const fullPath = path.join(dir, entry.name)
if (entry.isDirectory()) {
if (entry.isDirectory() && !entry.name.endsWith('internal')) {
result = result.concat(walk(fullPath))
} else if (entry.isFile() && entry.name.endsWith('.ts') && !entry.name.endsWith('.d.ts')) {
} else if (
entry.isFile() &&
entry.name.endsWith('.ts') &&
!entry.name.endsWith('.d.ts') &&
!entry.name.endsWith('.test.ts')
) {
result.push(fullPath)
}
}

View File

@@ -1,10 +1,12 @@
{
"extends": "@tabshift/typescript-config/base.json",
"compilerOptions": {
"declaration": true,
"declarationDir": "dist",
"outDir": "dist",
"rootDir": "src"
"rootDir": "src",
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src"]
"include": ["src"],
"exclude": ["src/**/*.test.ts"]
}