Skip to content

Commit

Permalink
Isolate Distributed JavaScript (#1645)
Browse files Browse the repository at this point in the history
Summary:
Pull Request resolved: #1645

Right now we publish Yoga by transforming in-place, and rewriting the entrypoint to point to the generated vanilla JavaScript.

It is nice to include the original source, e.g. so that users can use sourcemaps when debugging, but putting these files on top of each other has been causing problems, like #1637 (comment)

This changes the packaging step to instead put all the outputs into a "dist" folder, and point the package entrypoints there. We still include original source for sourcemap usage.

Reviewed By: yungsters

Differential Revision: D56093470

fbshipit-source-id: ecd52dddd9040294aae66747cf1fdf48c7f602e7
  • Loading branch information
NickGerleman authored and facebook-github-bot committed Apr 15, 2024
1 parent 70de2da commit 617fd3a
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 9 deletions.
32 changes: 24 additions & 8 deletions javascript/just.config.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ const {
logger,
jestTask,
option,
parallel,
series,
spawn,
task,
tscTask,
copyTask,
} = require('just-scripts');

const {existsSync} = require('fs');
Expand Down Expand Up @@ -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',
),
);
Expand All @@ -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,
Expand Down
4 changes: 3 additions & 1 deletion javascript/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down

0 comments on commit 617fd3a

Please sign in to comment.