Something went wrong. Try again.
[[MIRROR from GitHub]] Property based testing framework for JavaScript (like QuickCheck) written in TypeScript fast-check.dev
Something went wrong. Try again.
fast-check rolldown.common.config.js
2.3 kB · 76 lines
JavaScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677import { defineConfig } from 'rolldown';import { dts } from 'rolldown-plugin-dts';import { replacePlugin } from 'rolldown/plugins';
const inputDir = 'src';const outputDir = 'lib';
export default function buildConfigFor(pkg, dirname, replacementsFor) { let isDual = false; const inputs = Object.values(pkg.exports) .map((exportValue) => { if (typeof exportValue === 'string') { return exportValue; } isDual = true; return exportValue.import.default; }) .filter((filePath) => filePath.endsWith('.js')) .map((filePath) => filePath.replace(`./${outputDir}/`, `./${inputDir}/`));
/** @type {RolldownOptions} */ const sharedOptions = { input: inputs, output: { cleanDir: true, dir: outputDir, format: 'esm', entryFileNames: (chunkInfo) => { const cwdAndInputDirLength = dirname.length + inputDir.length + 2; const relativeFilePathWithTsExtension = chunkInfo.facadeModuleId.substring(cwdAndInputDirLength); return `${relativeFilePathWithTsExtension.replace(/\.ts$/, '')}.js`; }, }, external: /^[^./]/, // as recommended by https://rolldown.rs/reference/InputOptions.external#avoid-node-modules-for-npm-packages treeshake: { moduleSideEffects: false, }, plugins: [], }; return defineConfig([ { ...sharedOptions, output: { ...sharedOptions.output, format: 'esm', }, plugins: [ ...sharedOptions.plugins, ...(replacementsFor !== undefined ? [replacePlugin(replacementsFor(true), { preventAssignment: true })] : []), dts({ tsconfig: './tsconfig.json' }), ], }, ...(isDual ? [ { ...sharedOptions, output: { ...sharedOptions.output, format: 'cjs', dir: outputDir + '/cjs', }, plugins: [ ...sharedOptions.plugins, ...(replacementsFor !== undefined ? [ replacePlugin(replacementsFor(false), { preventAssignment: true, }), ] : []), ], }, ] : []), ]);}