diff --git a/javascript/just.config.cjs b/javascript/just.config.cjs index db3cd389..8373808d 100644 --- a/javascript/just.config.cjs +++ b/javascript/just.config.cjs @@ -13,11 +13,11 @@ const { logger, jestTask, option, - parallel, series, spawn, task, tscTask, + copyTask, } = require('just-scripts'); const {existsSync} = require('fs'); @@ -58,16 +58,32 @@ task('prepack-package-json', async () => { const packageJsonContents = await readFile(packageJsonPath); const packageJson = JSON.parse(packageJsonContents.toString('utf-8')); - recursiveReplace(packageJson, /(.\/src\/.*)\.ts/, '$1.js'); - packageJson.typings = packageJson.main.replace(/(.\/src\/.*)\.js/, '$1.d.ts'); + packageJson.main = packageJson.main.replace( + /^.\/src\/(.*)\.ts/, + './dist/src/$1.js', + ); + packageJson.types = packageJson.main.replace(/(.*)\.js/, '$1.d.ts'); + + recursiveReplace( + packageJson.exports, + /^.\/src\/(.*)\.ts/, + './dist/src/$1.js', + ); + await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2)); }); task( 'prepack', series( - parallel('build', tscTask({emitDeclarationOnly: true})), - babelTransformTask({dir: 'src'}), + 'build', + copyTask({paths: ['binaries'], dest: 'dist/binaries'}), + tscTask({ + emitDeclarationOnly: true, + rootDir: '.', + declarationDir: 'dist', + }), + babelTransformTask({src: 'src', dst: 'dist/src'}), 'prepack-package-json', ), ); @@ -85,14 +101,14 @@ function recursiveReplace(obj, pattern, replacement) { function babelTransformTask(opts) { return () => { const args = [ - opts.dir, + opts.src, '--source-maps', '--out-dir', - opts.dir, + opts.dst, '--extensions', '.js,.cjs,.mjs,.ts,.cts,.mts', ]; - logger.info(`Transforming "${path.resolve(opts.dir)}"`); + logger.info(`Transforming "${path.resolve(opts.src)}"`); return spawn(node, [require.resolve('@babel/cli/bin/babel'), ...args], { cwd: __dirname, diff --git a/javascript/package.json b/javascript/package.json index 42aab81e..9025d083 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -11,12 +11,14 @@ }, "type": "module", "main": "./src/index.ts", + "types": "./src/index.ts", "exports": { ".": "./src/index.ts", "./load": "./src/load.ts" }, "files": [ - "binaries/**", + "dist/binaries/**", + "dist/src/**", "src/**" ], "scripts": {