@oystehr/sdk
Version:
Oystehr SDK
129 lines (125 loc) • 3.47 kB
JavaScript
import commonjs from '@rollup/plugin-commonjs';
import json from '@rollup/plugin-json';
import resolve from '@rollup/plugin-node-resolve';
import terser from '@rollup/plugin-terser';
import typescript from '@rollup/plugin-typescript';
import { mkdirSync, writeFileSync } from 'fs';
import externals from 'rollup-plugin-node-externals';
const extensions = ['.ts', '.json'];
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
const sourcemapPathTransform = (path) => path.replaceAll('\\', '/').replaceAll('../../../src', '../../src');
export default [
{
// Use the regular index.ts and transform to CommonJS
input: 'src/index.ts',
output: [
{
dir: 'dist/cjs',
format: 'cjs',
preserveModules: true,
preserveModulesRoot: 'src',
sourcemap: true,
sourcemapPathTransform,
exports: 'named',
interop: 'auto',
entryFileNames: '[name].cjs',
},
],
plugins: [
json(),
externals({
// Don't externalize tslib so helpers are bundled
exclude: ['tslib'],
}),
resolve({
extensions,
preferBuiltins: false,
}),
typescript({
tsconfig: 'tsconfig.cjs.json',
resolveJsonModule: true,
outputToFilesystem: false,
// Ensure TypeScript emits helpers from tslib
importHelpers: true,
// Override module settings for CommonJS
compilerOptions: {
module: 'ESNext',
target: 'ES2022',
},
}),
commonjs({
transformMixedEsModules: true,
}),
{
buildEnd: () => {
mkdirSync('./dist/cjs', { recursive: true });
writeFileSync('./dist/cjs/package.json', '{"type": "commonjs"}');
// Also create the index.d.cts file for TypeScript consumers
writeFileSync('./dist/cjs/index.d.cts', 'export * from "./index";\nexport { default } from "./index";\n');
},
},
],
strictDeprecations: true,
},
// Separate configuration for minified bundle
// as terser is not working with ES2022 (not updated for 2 years...)
{
input: 'src/index.ts',
output: {
file: 'dist/cjs/index.min.cjs',
format: 'cjs',
name: 'osytehr.sdk',
sourcemap: true,
sourcemapPathTransform,
exports: 'named',
interop: 'auto',
},
plugins: [
json(),
resolve({
extensions,
preferBuiltins: false,
browser: true,
}),
typescript({
tsconfig: 'tsconfig.cjs.json',
resolveJsonModule: true,
outputToFilesystem: false,
importHelpers: true,
compilerOptions: {
module: 'ESNext',
target: 'ES2015',
},
}),
commonjs({
transformMixedEsModules: true,
}),
// Bundle tslib helpers inline for browser use
resolve({
preferBuiltins: false,
browser: true,
}),
// Only externalize non-browser dependencies
externals({
exclude: ['tslib', 'uuid', 'fast-json-patch'],
packagePath: './package.json',
}),
terser({
ecma: 2015,
module: false,
compress: {
ecma: 2015,
passes: 2,
},
mangle: {
safari10: true,
},
format: {
ecma: 2015,
safari10: true,
},
}),
],
strictDeprecations: true,
},
];