UNPKG

@oystehr/sdk

Version:

Oystehr SDK

129 lines (125 loc) 3.47 kB
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, }, ];