Skip to content

Commit 29f016c

Browse files
committed
Isolate Distributed JavaScript (#1645)
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
1 parent ed5d2ff commit 29f016c

2 files changed

Lines changed: 27 additions & 9 deletions

File tree

javascript/just.config.cjs

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ const {
1313
logger,
1414
jestTask,
1515
option,
16-
parallel,
1716
series,
1817
spawn,
1918
task,
2019
tscTask,
20+
copyTask,
2121
} = require('just-scripts');
2222

2323
const {existsSync} = require('fs');
@@ -58,16 +58,32 @@ task('prepack-package-json', async () => {
5858
const packageJsonContents = await readFile(packageJsonPath);
5959
const packageJson = JSON.parse(packageJsonContents.toString('utf-8'));
6060

61-
recursiveReplace(packageJson, /(.\/src\/.*)\.ts/, '$1.js');
62-
packageJson.types = packageJson.main.replace(/(.\/src\/.*)\.js/, '$1.d.ts');
61+
packageJson.main = packageJson.main.replace(
62+
/^.\/src\/(.*)\.ts/,
63+
'./dist/src/$1.js',
64+
);
65+
packageJson.types = packageJson.main.replace(/(.*)\.js/, '$1.d.ts');
66+
67+
recursiveReplace(
68+
packageJson.exports,
69+
/^.\/src\/(.*)\.ts/,
70+
'./dist/src/$1.js',
71+
);
72+
6373
await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
6474
});
6575

6676
task(
6777
'prepack',
6878
series(
69-
parallel('build', tscTask({emitDeclarationOnly: true})),
70-
babelTransformTask({dir: 'src'}),
79+
'build',
80+
copyTask({paths: ['binaries'], dest: 'dist/binaries'}),
81+
tscTask({
82+
emitDeclarationOnly: true,
83+
rootDir: '.',
84+
declarationDir: 'dist',
85+
}),
86+
babelTransformTask({src: 'src', dst: 'dist/src'}),
7187
'prepack-package-json',
7288
),
7389
);
@@ -85,14 +101,14 @@ function recursiveReplace(obj, pattern, replacement) {
85101
function babelTransformTask(opts) {
86102
return () => {
87103
const args = [
88-
opts.dir,
104+
opts.src,
89105
'--source-maps',
90106
'--out-dir',
91-
opts.dir,
107+
opts.dst,
92108
'--extensions',
93109
'.js,.cjs,.mjs,.ts,.cts,.mts',
94110
];
95-
logger.info(`Transforming "${path.resolve(opts.dir)}"`);
111+
logger.info(`Transforming "${path.resolve(opts.src)}"`);
96112

97113
return spawn(node, [require.resolve('@babel/cli/bin/babel'), ...args], {
98114
cwd: __dirname,

javascript/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
},
1212
"type": "module",
1313
"main": "./src/index.ts",
14+
"types": "./src/index.ts",
1415
"exports": {
1516
".": "./src/index.ts",
1617
"./load": "./src/load.ts"
1718
},
1819
"files": [
19-
"binaries/**",
20+
"dist/binaries/**",
21+
"dist/src/**",
2022
"src/**"
2123
],
2224
"scripts": {

0 commit comments

Comments
 (0)