September 2022 Summaries
3 posts from Aspect Build
Filter
Month:
Year:
Post Summaries
Back to Blog
Aspect's rules_js and rules_ts have made significant strides in integrating Bazel with TypeScript projects, offering a more efficient build process for Dev Infra teams considering migration. While Bazel presents risks due to its lower popularity among TypeScript build tools, it provides an opportunity for enhanced code governance and dependency management, especially within monorepos. The integration process involves careful planning, including a proof-of-concept phase, and requires developers to adapt to new workflows such as using pnpm instead of npm or yarn. Additionally, governance structures must be established to maintain code consistency and manage dependencies effectively. Transitioning to a monorepo setup involves meticulous migration of code from multiple repositories, ensuring minimal disruption and preserving git history. To succeed, developers must embrace trunk-based development underpinned by Continuous Integration practices, where dependencies are always at the latest version, and library changes are immediately impactful. Setting up CI/CD workflows is crucial, with tools like Bazel promising faster builds, although initial setup phases might introduce slowdowns. The overarching goal is to foster a collaborative environment where code sharing and consistent development practices are the norm.
Sep 16, 2022
1,470 words in the original blog post.
Bazel, a build and test tool, has not been instrumented with telemetry by its team, which limits the ability to gauge its market penetration and industry adoption. Despite suggestions to implement telemetry similar to that used by Angular CLI, the Bazel team decided against it, adhering to the philosophy that Bazel should function like a compiler without network engagement. As of the third quarter of 2022, it is estimated that approximately 600 companies use Bazel, with the potential to grow to about 3,750 companies once it achieves full market saturation. This projection is based on data from publicly disclosed Bazel users and private interactions with adopters by a consulting company, assuming both sources provide random samples of the total Bazel user population. The analysis considers the overlap of companies listed publicly and those known privately, using probability and linear algebra to estimate the total number of Bazel adopters. Currently, Bazel appears to be in the "Chasm" phase, transitioning from early adoption to early majority, suggesting it will require further effort for broader adoption.
Sep 12, 2022
787 words in the original blog post.
The post explores the significant speed improvements in TypeScript builds when utilizing Bazel's remote execution capabilities, particularly with Aspect's rules_ts. By employing a remote execution cluster provided by EngFlow, a 10 million line TypeScript application demonstrated an 8.4x faster build time compared to a local 16-core MacBook Pro. The benchmark highlighted the advantages of horizontal scaling, allowing builds to utilize more resources than a local machine could provide. Remote execution helps in reducing lengthy build and test durations, enhancing developer productivity by minimizing wait times. The post also discusses the challenges and solutions related to symlink compatibility in Bazel, which historically hindered remote execution with Node.js tools. Recent updates in Bazel 5.3.0 have started to address these issues, improving compatibility for remote execution. Furthermore, various configurations of ts_project and ts_library are examined, with specific focus on the performance benefits of using swc for transpilation. The overall findings suggest that remote execution can drastically cut build times for large projects, though the benefits depend on network speed and the specific build scenario, with local actions potentially being faster for smaller incremental builds.
Sep 06, 2022
2,610 words in the original blog post.