Summary: Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.1 to 1.4.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/webpack/loader-utils/releases">loader-utils's releases</a>.</em></p> <blockquote> <h2>v1.4.2</h2> <h3><a href="https://github.com/webpack/loader-utils/compare/v1.4.1...v1.4.2">1.4.2</a> (2022-11-11)</h3> <h3>Bug Fixes</h3> <ul> <li>ReDoS problem (<a href="https://github-redirect.dependabot.com/webpack/loader-utils/issues/226">https://github.com/facebook/yoga/issues/226</a>) (<a href="17cbf8fa89
">17cbf8f</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md">loader-utils's changelog</a>.</em></p> <blockquote> <h3><a href="https://github.com/webpack/loader-utils/compare/v1.4.1...v1.4.2">1.4.2</a> (2022-11-11)</h3> <h3>Bug Fixes</h3> <ul> <li>ReDoS problem (<a href="https://github-redirect.dependabot.com/webpack/loader-utils/issues/226">https://github.com/facebook/yoga/issues/226</a>) (<a href="17cbf8fa89
">17cbf8f</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="331ad5067d
"><code>331ad50</code></a> chore(release): 1.4.2</li> <li><a href="17cbf8fa89
"><code>17cbf8f</code></a> fix: ReDoS problem (<a href="https://github-redirect.dependabot.com/webpack/loader-utils/issues/226">https://github.com/facebook/yoga/issues/226</a>)</li> <li>See full diff in <a href="https://github.com/webpack/loader-utils/compare/v1.4.1...v1.4.2">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `dependabot rebase` will rebase this PR - `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `dependabot merge` will merge this PR after your CI passes on it - `dependabot squash and merge` will squash and merge this PR after your CI passes on it - `dependabot cancel merge` will cancel a previously requested merge and block automerging - `dependabot reopen` will reopen this PR if it is closed - `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/yoga/network/alerts). </details> Pull Request resolved: https://github.com/facebook/yoga/pull/1175 Reviewed By: NickGerleman Differential Revision: D41394939 Pulled By: ryancat fbshipit-source-id: 40034b0dc62431bccdc99611b8527422b74f15a3
Yoga

Building
Yoga builds with buck. Make sure you install buck before contributing to Yoga. Yoga's main implementation is in C++, with bindings to supported languages and frameworks. When making changes to Yoga please ensure the changes are also propagated to these bindings when applicable.
Alternatively, you can build and install Yoga using vcpkg dependency manager:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install yoga
The Yoga port in vcpkg is kept up to date by Microsoft team members and community contributors.
If the version is out of date, please create an issue or pull request on the vcpkg repository.
Testing
For testing we rely on gtest as a submodule. After cloning Yoga run git submodule init
followed by git submodule update
.
For any changes you make you should ensure that all the tests are passing. In case you make any fixes or additions to the library please also add tests for that change to ensure we don't break anything in the future. Tests are located in the tests
directory. Run the tests by executing buck test //:yoga
.
Instead of manually writing a test which ensures parity with web implementations of Flexbox you can run gentest/gentest.rb
to generate a test for you. You can write html which you want to verify in Yoga, in gentest/fixtures
folder, such as the following.
<div id="my_test" style="width: 100px; height: 100px; align-items: center;">
<div style="width: 50px; height: 50px;"></div>
</div>
Run gentest/gentest.rb
to generate test code and re-run buck test //:yoga
to validate the behavior. One test case will be generated for every root div
in the input html.
You should run bundle install
in the gentest
directory to install dependencies for the gentest/gentest.rb
Ruby script.
.NET
.NET testing is not integrated in buck yet, you might need to set up .NET testing environment. We have a script which to launch C# test on macOS, csharp/tests/Facebook.Yoga/test_macos.sh
.
Benchmarks
Benchmarks are located in benchmark/YGBenchmark.c
and can be run with buck run //benchmark:benchmark
. If you think your change has affected performance please run this before and after your change to validate that nothing has regressed. Benchmarks are run on every commit in CI.
JavaScript
Installing through NPM
npm install yoga-layout
By default this will install the library and try to build for all platforms (node, browser asm, and standalone webpack). You may receive errors if you do not have the required platform development tools already installed. To preset the platform you'd like to build for you can set a .npmrc property first.
npm config set yoga-layout:platform standalone
This will now only run the standalone webpack build upon install.
Build Platforms
name | description |
---|---|
all (default) | Builds all of these platforms. |
browser | Builds asm js browser version. |
node | Builds node js version. |
standalone | Runs webpack. |
none | Does nothing. You can use the prepackaged libs. |
Maintainer Release Guide
Release artifacts are published automatically when a new GitHub release is created. The publishing workflows may also be executed manually, given a Git Tag, to re-attempt publish.
NPM and NuGet packages are not currently published.