Yoga
构建
Yoga 使用 buck 构建。在向 Yoga 贡献之前,请确保已安装 buck。Yoga 的主要实现使用 C++,与支持的语言和框架绑定。当对 Yoga 进行更改时,请确保在适用的情况下也将更改传播到这些绑定。
测试
在测试中,我们依赖于作为一个子模块的gtest。在克隆Yoga之后,运行git submodule init
,然后运行git submodule update
。
对您所做的任何更改,都应确保所有测试都能通过。如果您修改或增加了库的内容,请也为该更改添加测试,以确保我们在未来不会破坏任何东西。测试位于tests
目录中。通过执行buck test //:yoga
来运行测试。
您不必手动编写测试来确保与Flexbox的Web实现兼容,而是可以运行gentest/gentest.rb
生成一个测试。您可以将您想验证在Yoga中的HTML写入gentest/fixtures
文件夹,例如以下所示。
<div id="my_test" style="width: 100px; height: 100px; align-items: center;">
<div style="width: 50px; height: 50px;"></div>
</div>
运行gentest/gentest.rb
生成测试代码,然后重新运行buck test //:yoga
以验证行为。对于输入HTML中的每个根div
将生成一个测试用例。
您可能需要安装最新的watir-webdriver gem(gem install watir-webdriver
)和ChromeDriver来运行gentest/gentest.rb
Ruby脚本。
.NET
yet, you might need to set up the .NET testing environment. We have a script to launch the C# test on macOS, csharp/tests/Facebook.Yoga/test_macos.sh
.
Benchmarks
Benchmarks位于benchmark/YGBenchmark.c
中,可以通过运行buck run //benchmark:benchmark
来执行。如果您认为您的更改已经影响了性能,请在更改前后运行该命令以验证没有回归。这些基准在CI中的每个提交都会运行。
JavaScript
通过NPM安装
npm install yoga-layout
默认情况下,这会安装库并尝试为所有平台(node、browser asm和standalone webpack)构建。如果您尚未安装所需的平台开发工具,可能会收到错误。要预置您想要构建的平台,您可以首先设置一个.npmrc属性。
npm config set yoga-layout:platform standalone
现在,在安装时将仅运行standalone webpack构建。
构建平台
名称 | 描述 |
---|---|
全部(默认) | 构建所有这些平台。 |
浏览器 | 构建 asm js 浏览器版本。 |
Node.js | 构建 Node.js 版本。 |
独立 | 运行 webpack。 |
无 | 不执行任何操作。您可以使用预包装的库。 |