Compare commits

..

4 Commits

Author SHA1 Message Date
Nick Gerleman
af57b2164d Fix JS build on Windows (#1648)
Summary:
Pull Request resolved: https://github.com/facebook/yoga/pull/1648

Node made a breaking change in a security release for 18/20 where `spawn()` no longer loads `.bat` files by default. 69ffc6d50d. Execute command in shell.

Reviewed By: javache

Differential Revision: D56230965

fbshipit-source-id: 52e9bd8a76664bd07ea25b6355ac54fcb24cbb9a
2024-04-19 12:14:03 -07:00
Nick Gerleman
1b9b878b9a Set version to 3.0.4 2024-04-17 00:02:16 -07:00
Nick Gerleman
866f503bde Don't run test validation off main branch (#1644)
Summary:
Pull Request resolved: https://github.com/facebook/yoga/pull/1644

Because Chrome behaviors can change

Reviewed By: cortinico

Differential Revision: D56088135

fbshipit-source-id: 7f760786dde061df9af034368e2184117e6e6846
2024-04-17 00:01:02 -07:00
Nick Gerleman
29f016c1ea Isolate Distributed JavaScript (#1645)
Summary:
Pull Request resolved: https://github.com/facebook/yoga/pull/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 https://github.com/facebook/yoga/issues/1637#issuecomment-2049099690

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
2024-04-17 00:00:55 -07:00
6 changed files with 41 additions and 19 deletions

View File

@@ -5,7 +5,6 @@ on:
push:
branches:
- main
- 'release-*'
workflow_dispatch:
jobs:

View File

@@ -6,7 +6,7 @@
Pod::Spec.new do |spec|
spec.name = 'Yoga'
spec.version = '3.0.3'
spec.version = '3.0.4'
spec.license = { :type => 'MIT', :file => "LICENSE" }
spec.homepage = 'https://yogalayout.dev/'
spec.documentation_url = 'https://yogalayout.dev/docs'

View File

@@ -11,4 +11,4 @@ android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536M
VERSION_NAME=3.0.3
VERSION_NAME=3.0.4

View File

@@ -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.types = 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,
@@ -152,9 +168,9 @@ function installEmsdkTask() {
{stdio: 'inherit'},
);
await spawn(emsdkBin, ['install', emsdkVersion], {stdio: 'inherit'});
await spawnShell(emsdkBin, ['install', emsdkVersion], {stdio: 'inherit'});
await spawn(emsdkBin, ['activate', emsdkVersion], {
await spawnShell(emsdkBin, ['activate', emsdkVersion], {
stdio: logger.enableVerbose ? 'inherit' : 'ignore',
});
};
@@ -200,7 +216,7 @@ function emcmakeGenerateTask() {
];
logger.info(['emcmake', ...args].join(' '));
return spawn(emcmakeBin, args, {
return spawnShell(emcmakeBin, args, {
stdio: logger.enableVerbose ? 'inherit' : 'ignore',
});
};
@@ -218,7 +234,7 @@ function cmakeBuildTask(opts) {
];
logger.info(['cmake', ...args].join(' '));
return spawn(cmake, args, {stdio: 'inherit'});
return spawnShell(cmake, args, {stdio: 'inherit'});
};
}
@@ -230,8 +246,13 @@ function clangFormatTask(opts) {
];
logger.info(['clang-format', ...args].join(' '));
return spawn(node, [require.resolve('clang-format'), ...args], {
return spawnShell(node, [require.resolve('clang-format'), ...args], {
stdio: 'inherit',
});
};
}
function spawnShell(cmd, args, opts) {
// https://github.com/nodejs/node/issues/52554
return spawn(cmd, args, {...opts, shell: true});
}

View File

@@ -1,6 +1,6 @@
{
"name": "yoga-layout",
"version": "3.0.3",
"version": "3.0.4",
"description": "An embeddable and performant flexbox layout engine with bindings for multiple languages",
"license": "MIT",
"author": "Meta Open Source",
@@ -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": {

View File

@@ -27,7 +27,7 @@
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-live": "^4.1.5",
"yoga-layout": "3.0.3"
"yoga-layout": "3.0.4"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.0.0",