<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Nrwl</title>
    <description>The latest articles on Forem by Nrwl (@nrwl).</description>
    <link>https://forem.com/nrwl</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2994%2Ff141d76d-7615-4c54-abd6-b684765ea348.png</url>
      <title>Forem: Nrwl</title>
      <link>https://forem.com/nrwl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nrwl"/>
    <language>en</language>
    <item>
      <title>Lerna 5.1 - New website, new guides, new Lerna example repo, distributed caching support and speed!</title>
      <dc:creator>Juri Strumpflohner</dc:creator>
      <pubDate>Wed, 15 Jun 2022 16:32:18 +0000</pubDate>
      <link>https://forem.com/nrwl/lerna-51-new-website-new-guides-new-lerna-example-repo-distributed-caching-support-and-speed-31oe</link>
      <guid>https://forem.com/nrwl/lerna-51-new-website-new-guides-new-lerna-example-repo-distributed-caching-support-and-speed-31oe</guid>
      <description>&lt;p&gt;Almost exactly a month ago we (Nrwl &amp;amp; the Nx team) &lt;a href="https://blog.nrwl.io/lerna-is-dead-long-live-lerna-61259f97dbd9?source=friends_link&amp;amp;sk=60349b9dc0be3ff730ad052c4cf69df3" rel="noopener noreferrer"&gt;took over stewardship of Lerna&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;It has been a wild ride since then 🤯. We..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;made ourselves familiar with the codebase, improved local development and releases for testing with &lt;a href="https://verdaccio.org/" rel="noopener noreferrer"&gt;Verdaccio&lt;/a&gt;, started setting up e2e tests and tons of more improvements to the development process&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lerna/lerna/releases/tag/v5.0.0" rel="noopener noreferrer"&gt;released Lerna 5.0&lt;/a&gt; a couple of weeks later, with some important deprecated package upgrades and security fixes&lt;/li&gt;
&lt;li&gt;processed 84+ issues so far&lt;/li&gt;
&lt;li&gt;started experimenting to solve one of the main pain points Lerna users experience: scaling and speed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And now, 1 month later I'm excited to announce our next release! Here's all you need to know.&lt;/p&gt;

&lt;p&gt;Also check out the latest Nx Show where we talked all about Lerna v5 and the roadmap going forward.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/lKCRX5Yrl8Y"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Fast Lerna Monorepos - powered by Nx
&lt;/h2&gt;

&lt;p&gt;Immediately after the 5.0 maintenance release, we started looking into one of the biggest pain points we have been hearing from Lerna users: scaling &amp;amp; speed.&lt;/p&gt;

&lt;p&gt;Lerna uses two open-source packages &lt;code&gt;p-map&lt;/code&gt; and &lt;code&gt;p-queue&lt;/code&gt; for scheduling its tasks. The industry has advanced meanwhile, though. And there are better and more efficient alternatives. Starting with v5.1 we, therefore, added a 3rd option, to use the &lt;code&gt;nx&lt;/code&gt; package.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note, Nx is and has always been open source following the MIT license&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Delegating task scheduling to Nx allows to speed up any Lerna workspace in the range of 2-10 times. Check out &lt;a href="https://github.com/vsavkin/large-monorepo" rel="noopener noreferrer"&gt;our public benchmark&lt;/a&gt; which compares Lerna with other popular JS based monorepo tools.&lt;/p&gt;

&lt;p&gt;To make Lerna faster, all you need to do is to&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;install the &lt;code&gt;nx&lt;/code&gt; package&lt;/li&gt;
&lt;li&gt;set the &lt;code&gt;useNx&lt;/code&gt; property to true in &lt;code&gt;lerna.json&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read all about it on Lerna's new &lt;a href="https://lerna.js.org/docs/core-concepts/running-tasks" rel="noopener noreferrer"&gt;guide about "Running Tasks"&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Community Contributions 🙌
&lt;/h2&gt;

&lt;p&gt;Alongside our own fixes and features, we've been delighted to reignite community contributions to the Lerna codebase, including merging several existing PRs.&lt;/p&gt;

&lt;p&gt;We were grateful to receive and merge various documentation improvements from the community, as well as some key fixes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/lerna/lerna/pull/2946" rel="noopener noreferrer"&gt;#2946&lt;/a&gt; from &lt;code&gt;@feryardiant&lt;/code&gt; means that there will no longer be issues with orphaned child processes on Windows when using Lerna's legacy task runners&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lerna/lerna/pull/2874" rel="noopener noreferrer"&gt;#2874&lt;/a&gt; from &lt;code&gt;@rix0rrr&lt;/code&gt; makes Lerna much faster at checking for cyclical dependencies in large workspaces when building its internal package graph&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lerna/lerna/pull/3091" rel="noopener noreferrer"&gt;#3091&lt;/a&gt; from &lt;code&gt;@simon-abbott&lt;/code&gt; allows Lerna to more seamlessly support v2 lock files as part of the versioning and publishing workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since we took over the project, a &lt;strong&gt;massive 84 issues have been closed so far&lt;/strong&gt; (none of which were done by any kind of automated process). We have additionally been working on some automated messaging for very old, non-upvoted issues (those without any activity of any kind since before June 2021) in order to assist with scaling our efforts to modernize the codebase and focus on what really matters to Lerna users.&lt;/p&gt;

&lt;p&gt;We want to help the community flourish and as part of that created a new &lt;code&gt;#lerna&lt;/code&gt; channel to the Nrwl community slack: &lt;a href="https://go.nrwl.io/join-slack" rel="noopener noreferrer"&gt;join here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  An all-new Website - powered by Docusaurus
&lt;/h2&gt;

&lt;p&gt;With the latest release we also completely redesigned the website, with a brand new theme that still preserves Lerna's spirit but presents it in a modern and fresh manner.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd41fmq5coax7uoru1qdv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd41fmq5coax7uoru1qdv.gif" alt="Lerna website redesign" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check it out on &lt;a href="https://lerna.js.org/" rel="noopener noreferrer"&gt;https://lerna.js.org/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Lerna's new website is powered by &lt;a href="https://docusaurus.io/" rel="noopener noreferrer"&gt;Docusaurus&lt;/a&gt;, a powerful open-source engine to generate static websites, which makes writing docs a breeze. And of course, the Lerna website got dark mode now 😉.&lt;/p&gt;

&lt;p&gt;Alongside the refreshed website, we also created a set of new guides that help you&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;get started with Lerna;&lt;/li&gt;
&lt;li&gt;that explain the core concepts around &lt;a href="https://lerna.js.org/docs/core-concepts/bootstrapping" rel="noopener noreferrer"&gt;bootstrapping&lt;/a&gt;, &lt;a href="https://lerna.js.org/docs/core-concepts/running-tasks" rel="noopener noreferrer"&gt;task scheduling&lt;/a&gt; and &lt;a href="https://lerna.js.org/docs/core-concepts/versioning-and-publishing" rel="noopener noreferrer"&gt;publishing&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;that go into more details of some new features thanks to the Nx integration like &lt;a href="https://lerna.js.org/docs/core-concepts/computation-caching" rel="noopener noreferrer"&gt;caching&lt;/a&gt; and &lt;a href="https://lerna.js.org/docs/core-concepts/distributed-task-execution" rel="noopener noreferrer"&gt;distributed task execution&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over the next couple of days, we will keep improving those initial docs and cleaning up the README files on the main Lerna repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Example Repositories
&lt;/h2&gt;

&lt;p&gt;Docs are one thing, having some example repositories is usually even more helpful to get your hands-on. We are 100% with you on this one. This is why we created two new example repositories which are deeply embedded into our guides and which you can use to try out and experiment with Lerna.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/lerna/getting-started-example" rel="noopener noreferrer"&gt;Lerna Getting Started example repository&lt;/a&gt; -&lt;/strong&gt; You can clone it and play around with it directly or use it as part of our guides to walk through some of the aspects of setting up Lerna or playing around with its new task scheduling features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/vsavkin/lerna-dte" rel="noopener noreferrer"&gt;Lerna and Distributed Task Execution&lt;/a&gt; -&lt;/strong&gt; We also set up a new example repository to demonstrate the power of not just using distributed caching, but distributing you task execution across various agents to drastically reduce your CI build times. Check out the repo or learn more on &lt;a href="https://lerna.js.org/docs/core-concepts/distributed-task-execution" rel="noopener noreferrer"&gt;our docs&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lerna 5 video walkthrough
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/WgO5iG57jeQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;In the coming weeks, we're going to make updates to the repository's READMEs, integrate missing information into the new guides and streamline the content.&lt;/p&gt;

&lt;p&gt;Here are some more things to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/lerna/lerna/discussions/3140" rel="noopener noreferrer"&gt;Lerna 2022 roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;follow us on &lt;a href="https://twitter.com/nxdevtools" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; &lt;em&gt;(we're announcing also all Lerna related things alongside our Nx twitter account)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;subscribe to our &lt;a href="https://www.youtube.com/nrwl_io" rel="noopener noreferrer"&gt;Youtube channel&lt;/a&gt; for new tutorials &amp;amp; announcements around Lerna, Nx, Monorepos and tooling&lt;/li&gt;
&lt;li&gt;join the &lt;code&gt;#lerna&lt;/code&gt; channel on the &lt;a href="https://go.nrwl.io/join-slack" rel="noopener noreferrer"&gt;Nrwl Community Slack&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Like it? Make sure to tweet about it and let the community know 😃&lt;/p&gt;




&lt;h2&gt;
  
  
  Learn more
&lt;/h2&gt;

&lt;p&gt;🧠 &lt;a href="https://lerna.js.org" rel="noopener noreferrer"&gt;Lerna Docs&lt;/a&gt;&lt;br&gt;
👩‍💻 &lt;a href="https://github.com/lerna/lerna" rel="noopener noreferrer"&gt;Lerna GitHub&lt;/a&gt;&lt;br&gt;
💬 &lt;a href="https://go.nrwl.io/join-slack" rel="noopener noreferrer"&gt;Nrwl Community Slack&lt;/a&gt;&lt;br&gt;
📹 &lt;a href="https://www.youtube.com/nrwl_io" rel="noopener noreferrer"&gt;Nrwl Youtube Channel&lt;/a&gt;&lt;br&gt;
🧐 &lt;a href="https://nrwl.io/contact-us" rel="noopener noreferrer"&gt;Need help with Angular, React, Monorepos, Lerna or Nx? Talk to us 😃&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, if you liked this, click the ❤️ and make sure to follow &lt;a href="https://twitter.com/juristr" rel="noopener noreferrer"&gt;Juri&lt;/a&gt; and &lt;a href="https://twitter.com/nxdevtools" rel="noopener noreferrer"&gt;Nx&lt;/a&gt; on Twitter for more!&lt;/p&gt;


&lt;div class="ltag__tag ltag__tag__id__18643"&gt;
    &lt;div class="ltag__tag__content"&gt;
      &lt;h2&gt;#&lt;a href="https://dev.to/t/nx" class="ltag__tag__link"&gt;nx&lt;/a&gt; Follow
&lt;/h2&gt;
      &lt;div class="ltag__tag__summary"&gt;
        
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>monorepo</category>
      <category>javascript</category>
      <category>lerna</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Lerna is dead - Long Live Lerna</title>
      <dc:creator>Juri Strumpflohner</dc:creator>
      <pubDate>Wed, 11 May 2022 16:42:18 +0000</pubDate>
      <link>https://forem.com/nrwl/lerna-is-dead-long-live-lerna-3jal</link>
      <guid>https://forem.com/nrwl/lerna-is-dead-long-live-lerna-3jal</guid>
      <description>&lt;p&gt;If you’re in a hurry, here’s the &lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We, &lt;a href="https://nrwl.io" rel="noopener noreferrer"&gt;Nrwl&lt;/a&gt;, the company behind &lt;a href="https://nx.dev" rel="noopener noreferrer"&gt;Nx&lt;/a&gt;, are taking over the stewardship of Lerna.js, the popular JS monorepo tool. &lt;a href="https://github.com/lerna/lerna/issues/3121" rel="noopener noreferrer"&gt;Here’s the official announcement on the Lerna repo&lt;/a&gt;. We are thrilled and committed to helping the Lerna community move forward!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Who is Nrwl?
&lt;/h2&gt;

&lt;p&gt;We (Nrwl) are the company behind &lt;a href="https://nx.dev" rel="noopener noreferrer"&gt;Nx&lt;/a&gt; (&lt;a href="https://github.com/nrwl/nx" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;) and we have been founded by two ex-Googlers and Angular core team members &lt;a href="https://twitter.com/jeffbcross" rel="noopener noreferrer"&gt;Jeff Cross&lt;/a&gt; and &lt;a href="https://twitter.com/victorsavkin" rel="noopener noreferrer"&gt;Victor Savkin&lt;/a&gt;. Experiencing a large-scale monorepo in action at Google, gave them a lot of insights into the advantages and productivity gains for software teams as well as the features and tooling support that is required to make monorepos work, especially at a large scale. When they left Google, they decided to bring such a tool to the masses, but with a clear goal of&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;building it in the open as an open-source product and&lt;/li&gt;
&lt;li&gt;making it approachable and easy to use by focusing on great DX&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is when &lt;a href="https://nx.dev" rel="noopener noreferrer"&gt;Nx&lt;/a&gt; started.&lt;/p&gt;

&lt;p&gt;We think we are the best fit for helping the Lerna community continue and thrive because we have a good combination of real-world experience with open source community work. As part of Nrwl, we work with some of the world's biggest companies, helping them improve productivity and ship great quality software through monorepos. In addition, Jeff and Victor have a lot of knowledge of managing a big open source project such as Angular when they were at Google and obviously at Nrwl from managing Nx as an open-source project with its quickly growing community.&lt;/p&gt;

&lt;p&gt;Long story short, Nrwl ❤️  open source and community work, and we are thrilled to work with the Lerna community!&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s the story about Lerna being dead?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;(Spoiler: It is not dead, we took over stewardship&lt;/em&gt; 😉&lt;em&gt;. But apart from that, here’s the whole story)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;August 2020 - Issue is being opened &lt;a href="https://github.com/lerna/lerna/issues/2703" rel="noopener noreferrer"&gt;mentioning that Lerna is largely unmaintained&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;April 2022 - A &lt;a href="https://github.com/lerna/lerna/pull/3092" rel="noopener noreferrer"&gt;PR gets merged&lt;/a&gt; that properly highlights the fact of Lerna being unmaintained at the very top of the repository README. This made the “Lerna is dead” discussions flare up again.&lt;/li&gt;
&lt;li&gt;May 2022 - Lerna got resurrected: Nrwl takes over&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While that last PR didn’t really change the fact that Lerna has been in that state for the past years already, it just made it more apparent and also how many still rely on Lerna today.&lt;/p&gt;

&lt;p&gt;And this is not to blame its contributors at all. They did an amazing job. However, Open Source can be a tough place, especially if it is not backed by a large community and/or company that helps make the work sustainable in the long run. Taking the weight of maintaining such a widely used tool, and then mostly for free, is a huge one. Burnout is real folks, so take care. And we’ve had lots of such open-source examples in the past years.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nrwl is taking over: now what?
&lt;/h2&gt;

&lt;p&gt;Lerna has definitely pioneered the JS monorepo space, however, the tooling space has progressed a lot in recent years. Some of its features are now baked into NPM, YARN, PNPM, and Lerna &lt;a href="https://monorepo.tools/#tools-review" rel="noopener noreferrer"&gt;lacks many other important monorepo features&lt;/a&gt; such as computation caching to mention one example.&lt;/p&gt;

&lt;p&gt;Nx can fill in many of these gaps. When the first discussions about Lerna being unmaintained came up in 2020, we implemented a set of features, allowing for easy migration from &lt;a href="https://nx.dev/migration/adding-to-monorepo" rel="noopener noreferrer"&gt;Lerna/NPM/Yarn/PNPM workspaces to Nx&lt;/a&gt;. In addition, some recent &lt;a href="https://blog.nrwl.io/nx-v14-is-out-here-is-all-you-need-to-know-af4cb501e030" rel="noopener noreferrer"&gt;improvements in Nx&lt;/a&gt; make this even easier, allowing it to basically co-exist in any of these workspaces. This can be done for instance by leveraging &lt;a href="https://nx.dev/getting-started/nx-core" rel="noopener noreferrer"&gt;Nx’s powerful task scheduling capabilities&lt;/a&gt; while still continuing on relying on Lerna’s publishing process. Maintaining now both projects, Lerna &amp;amp; Nx, puts us in the unique position of allowing us to work on some seamless integration between the two.&lt;/p&gt;

&lt;p&gt;With Nx, we are known to have a clear roadmap shared with the community of what our next 6 months’ focus will be (here’s an &lt;a href="https://github.com/nrwl/nx/discussions/9716" rel="noopener noreferrer"&gt;example of our roadmap for v15&lt;/a&gt;). As we get our hands dirty on Lerna’s codebase in the coming weeks, we are going to define a set of action items, prioritize them and elaborate a proper roadmap as well, which we will share with the community as soon as we have a more concrete plan. Since we know many organizations still depend on Lerna or may not be able to migrate away soon, some of our immediate to mid-term actions will be to &lt;strong&gt;provide critical bug fixes and security updates to the project&lt;/strong&gt; and regularly release those to NPM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay tuned for more!
&lt;/h2&gt;

&lt;p&gt;We think Lerna’s and Nx’s future is bright and we are excited to help move the monorepo space forward, more than ever before!&lt;/p&gt;

&lt;p&gt;Make sure you don’t miss anything by&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Following us &lt;a href="https://twitter.com/NxDevTools" rel="noopener noreferrer"&gt;on Twitter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribing to our &lt;a href="https://youtube.com/nrwl_io?sub_confirmation=1" rel="noopener noreferrer"&gt;YouTube Channel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribing to &lt;a href="https://go.nrwl.io/nx-newsletter" rel="noopener noreferrer"&gt;our newsletter&lt;/a&gt;!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>monorepo</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>More time saved, for free - with Nx Cloud 🎉</title>
      <dc:creator>Juri Strumpflohner</dc:creator>
      <pubDate>Tue, 08 Feb 2022 17:23:43 +0000</pubDate>
      <link>https://forem.com/nrwl/more-time-saved-for-free-with-nx-cloud-4a2j</link>
      <guid>https://forem.com/nrwl/more-time-saved-for-free-with-nx-cloud-4a2j</guid>
      <description>&lt;p&gt;One of the greatest challenges of maintaining popular open-source software is finding a way to sustain its long-term development, which is how we came to develop &lt;a href="https://nx.app/" rel="noopener noreferrer"&gt;Nx Cloud&lt;/a&gt;: a commercial tool that expands upon Nx. Nx Cloud provides additional features for collaboration, scalability, and the various needs of large and enterprise-scale monorepo management.&lt;/p&gt;

&lt;p&gt;Nx users do &lt;em&gt;not&lt;/em&gt; have to use Nx Cloud. By default Nx’s computation cache is local to your developer machine, sitting in the node_modules folder. Nx Cloud sits on top of Nx, taking its computation cache to another level by making it distributed. This allows CI agents, dev team members, and other tools and stakeholders to benefit from it as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpu9v9tz7pme8c6mgt6ea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpu9v9tz7pme8c6mgt6ea.png" alt="Nx Cloud distributed cache overview" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Powerful Insights
&lt;/h2&gt;

&lt;p&gt;We’ve come a long way since the early days of Nx Cloud. We improved our dashboard to give you insights into your task runs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j9g96ow5akmo6heo3ug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j9g96ow5akmo6heo3ug.png" alt="Nx Cloud Dashboard runs overview" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The dashboard provides details for every task run and allows you to inspect whether it was a cache hit or miss, the execution time, and error logs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fch2hremrkkycy5xpljcc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fch2hremrkkycy5xpljcc.png" alt="Nx Cloud run detail" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It can also verify whether it was a “near-miss”; i.e. if a task was executed and cached previously, but that cache could not be used in the current run due to some slight non-matching properties (such as source code, deps or runtime environment variables). This is highly useful for debugging and understanding cache misses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp79p7orlp8is0cm3v0k2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp79p7orlp8is0cm3v0k2.png" alt="Compare Near misses" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All of this can also be linked directly to your GitHub PRs via a dedicated &lt;a href="https://nx.app/docs/public-cloud-github-integration" rel="noopener noreferrer"&gt;Nx Cloud GitHub integration&lt;/a&gt; that picks up PRs and reports back the status of the task executions.&lt;/p&gt;

&lt;h2&gt;
  
  
  DTE - Distributed Task Execution
&lt;/h2&gt;

&lt;p&gt;While enabling distributed computation caching helps reduce task execution times, what really makes a difference is &lt;strong&gt;distributed task execution (short: DTE)&lt;/strong&gt;. It is probably the Nx Cloud feature we’re most proud of 🙂.&lt;/p&gt;

&lt;p&gt;Optimizing a CI setup, especially on more large-scale monorepos, can become quite painful over time. Nx already provides a lot of the tooling out of the box: you can programmatically access affected projects, dynamically allocate agents, and run tasks in parallel. In complex, large-scale monorepos, you ideally want to achieve high parallelism, maximize utilization, and avoid idle times – optimizing clock time (time passed) with computation time (CPU cycles). Getting that right is particularly challenging.&lt;/p&gt;

&lt;p&gt;Nx Cloud’s DTE understands which commands your CI is running, how many agents are typically being used, and how long a given task typically takes. It leverages that information along with task dependencies to create an execution plan that prioritizes builds of shared libraries first to unblock upstream builds. This results in a more even utilization of CI agents, optimizing the overall running time of your CI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdl8hdwfwkhte983q9hbs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdl8hdwfwkhte983q9hbs.png" alt="Nx Cloud Distribute Task Agent run visualization" width="800" height="790"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Over time, Nx Cloud’s DTE learns about your workspace, keeping metrics about running times to allow the best possible distribution of a given task with the given amount of agents.&lt;/p&gt;

&lt;p&gt;You’re probably wondering whether you need a PhD to set this up! We promise it’s more straightforward than you’d think. Read all about enabling DTE &lt;a href="https://nx.app/docs/distributed-execution#enabling-distributed-task-execution" rel="noopener noreferrer"&gt;on the Nx Cloud docs&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finally, the exciting news: more hours saved, for free! 🎉
&lt;/h2&gt;

&lt;p&gt;Nx Cloud literally allows you to &lt;strong&gt;buy time&lt;/strong&gt;. When you sign up, you get billed based on how much benefit you get from using the Distributed Computation cache and Distributed Task Execution. To assess the benefit, Nx Cloud calculates “time saved”, by comparing the optimized Nx Cloud running time compared to what it would have taken without Nx Cloud. You can check all the details on how such calculation works in the &lt;a href="https://nx.app/docs/billing-and-utilization" rel="noopener noreferrer"&gt;Billing and Utilization FAQs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Until now, every Nx Cloud workspace got 5 hrs of time saved for free per month. We’re happy to announce that starting today we’re increasing that free allowance to &lt;strong&gt;500 hours per month&lt;/strong&gt;! 🎉&lt;/p&gt;

&lt;p&gt;Or put differently: most Nx workspaces will never run out of free hours!&lt;/p&gt;

&lt;h3&gt;
  
  
  Q: I have an active coupon, what do I need to do?
&lt;/h3&gt;

&lt;p&gt;A: You don’t need to change anything. Free hours are always consumed before any coupon. Now, only if you go over the 500 free hrs/month, your coupon will be used. The only thing that might happen is that you will never consume your coupon 🙂.&lt;/p&gt;

&lt;h3&gt;
  
  
  Q: I’m currently on the “Swim” plan, having billing set up and linked to a credit card. Do I need to do anything?
&lt;/h3&gt;

&lt;p&gt;A: The existing Swim plan ($29/month) remains active for existing users. If you want to keep supporting us, feel free to leave it as such, we’ll appreciate it. If you already know you wouldn’t use more than 500 hrs/month in your workspace, then you can go to your Nx Cloud dashboard and cancel your subscription. As a result, you would transition to the new free plan with 500hrs/month included.&lt;/p&gt;

&lt;h3&gt;
  
  
  Q: I need way more than 500hrs. What should I do?
&lt;/h3&gt;

&lt;p&gt;A: You can still start with the free plan and pay $1 per additional hour once you’ve consumed the free bucket of 500 hours. But most probably at that point, you would want to talk to us about Nx Enterprise. That gives you even more flexibility and a package tailored to your organization’s needs. Learn more on our &lt;a href="https://nx.app/pricing" rel="noopener noreferrer"&gt;Nx Cloud pricing page&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Q: Does this include private cloud?
&lt;/h3&gt;

&lt;p&gt;A: No. For enterprises that want full control over where the data is being stored, we have Nx Private Cloud, which comes with a Docker container that can be installed and set up in your own infrastructure. Private Nx Cloud has a different pricing model. Learn more on the Nx Cloud docs: &lt;a href="https://nx.app/private-cloud" rel="noopener noreferrer"&gt;https://nx.app/private-cloud&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wow, how do I enable Nx Cloud?
&lt;/h2&gt;

&lt;p&gt;If you create a new workspace, simply answer “Yes” to the question about setting up Nx Cloud. Up until now the predefined answer for that question during the setup phase was set to “No”, explicitly making the user opt-in. Given 500 hours is more than most users will need, we’re going to set the default answer to “Yes”. Obviously, you can still switch to “No” during the setup 🙂.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozmy4l06pi6axi43jp9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozmy4l06pi6axi43jp9q.png" alt="Nx setup with Nx Cloud opt-in question" width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you already have an existing workspace simply run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx nx connect-to-nx-cloud
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both of these operations set up your workspace and connect it with Nx Cloud. Finally, go to &lt;a href="https://nx.app" rel="noopener noreferrer"&gt;https://nx.app&lt;/a&gt;, create a user account and claim your existing workspace 🙂.&lt;/p&gt;




&lt;h2&gt;
  
  
  Learn more
&lt;/h2&gt;

&lt;p&gt;🧠 &lt;a href="https://nx.dev" rel="noopener noreferrer"&gt;Nx Docs&lt;/a&gt;&lt;br&gt;
👩‍💻 &lt;a href="https://github.com/nrwl/nx" rel="noopener noreferrer"&gt;Nx GitHub&lt;/a&gt;&lt;br&gt;
💬 &lt;a href="https://go.nrwl.io/join-slack" rel="noopener noreferrer"&gt;Nrwl Community Slack&lt;/a&gt;&lt;br&gt;
📹 &lt;a href="https://www.youtube.com/nrwl_io" rel="noopener noreferrer"&gt;Nrwl Youtube Channel&lt;/a&gt;&lt;br&gt;
🥚 &lt;a href="https://egghead.io/courses/scale-react-development-with-nx-4038" rel="noopener noreferrer"&gt;Free Egghead course&lt;/a&gt;&lt;br&gt;
🧐 &lt;a href="https://nrwl.io/contact-us" rel="noopener noreferrer"&gt;Need help with Angular, React, Monorepos, Lerna or Nx? Talk to us 😃&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, if you liked this, click the ❤️ and make sure to follow &lt;a href="https://twitter.com/juristr" rel="noopener noreferrer"&gt;Juri&lt;/a&gt; and &lt;a href="https://twitter.com/nxdevtools" rel="noopener noreferrer"&gt;Nx&lt;/a&gt; on Twitter for more!&lt;/p&gt;

</description>
      <category>monorepo</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Monorepos Explained</title>
      <dc:creator>Juri Strumpflohner</dc:creator>
      <pubDate>Wed, 26 Jan 2022 17:05:37 +0000</pubDate>
      <link>https://forem.com/nrwl/monorepos-explained-31b5</link>
      <guid>https://forem.com/nrwl/monorepos-explained-31b5</guid>
      <description>&lt;p&gt;Monorepos have been around for a while. Googled, Facebook, Microsoft, and so on are commonly mentioned when it comes to discussing monorepos. All three are known for having gigantic monorepos where they scale development across their large teams. Now, not many reach those levels and thus disregard monorepos for only being about scaling to the masses. Wrongly so!&lt;/p&gt;

&lt;p&gt;And in fact, while monorepos have been around and quite heavily adopted in the enterprise space, they recently gained some increased interest in the JS community:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://bestofjs.org/projects?tags=monorepo" rel="noopener noreferrer"&gt;Best of JS&lt;/a&gt; recently added a monorepo listing&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://stateofjs.com" rel="noopener noreferrer"&gt;State of JS&lt;/a&gt; included an entire section about monorepos&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.thoughtworks.com/radar/tools/nx" rel="noopener noreferrer"&gt;ThoughtWorks Technology Radar&lt;/a&gt; included a section expressing a strong preference to use &lt;a href="https://nx.dev" rel="noopener noreferrer"&gt;Nx&lt;/a&gt; for managing JavaScript-based monorepos.&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;"&lt;strong&gt;But what is a monorepo really?&lt;/strong&gt;" "&lt;strong&gt;Why would I want to use one over - say - a polyrepo?&lt;/strong&gt;" "&lt;strong&gt;We are using a microfrontend architecture, so monorepos are not for us!&lt;/strong&gt;". These are just some questions and misconceptions that frequently come up. &lt;/p&gt;

&lt;p&gt;Today I'm happy to announce that we launched &lt;strong&gt;&lt;a href="https://monorepo.tools" rel="noopener noreferrer"&gt;https://monorepo.tools&lt;/a&gt;&lt;/strong&gt; to address those questions!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/jUIxkryvWA0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I've been using monorepos for years, and most recently as part of my job at &lt;a href="https://nrwl.io" rel="noopener noreferrer"&gt;Nrwl&lt;/a&gt;, I help build &lt;a href="https://nx.dev" rel="noopener noreferrer"&gt;Nx&lt;/a&gt;, a smart, fast, and extensible build system that helps with monorepos. At Nrwl we work with big enterprises helping them scale their software development efforts, which often also involves supporting them in setting up and structuring a monorepo. We've done that for years! Given the recent interest, we wanted to help newcomers enter the space and give them a starting point to explore more. &lt;/p&gt;

&lt;p&gt;The goal is to address common questions and misconceptions around monorepos, why you'd want to use one, available tooling and features those tools should have, as well as links to resources for learning more. We reached out to monorepo tool authors to review the site and we'll keep it updated to add more valuable links and resources. If you have something ping &lt;a href="https://twitter.com/juristr" rel="noopener noreferrer"&gt;me on Twitter&lt;/a&gt;, or directly use the provided GitHub link on the &lt;a href="https://monorepo.tools" rel="noopener noreferrer"&gt;monorepo.tools&lt;/a&gt; site to suggest something 🙂&lt;/p&gt;

&lt;p&gt;Check it out! &lt;/p&gt;




&lt;h2&gt;
  
  
  Learn more
&lt;/h2&gt;

&lt;p&gt;🧠 &lt;a href="https://nx.dev" rel="noopener noreferrer"&gt;Nx Docs&lt;/a&gt;&lt;br&gt;
👩‍💻 &lt;a href="https://github.com/nrwl/nx" rel="noopener noreferrer"&gt;Nx GitHub&lt;/a&gt;&lt;br&gt;
💬 &lt;a href="https://go.nrwl.io/join-slack" rel="noopener noreferrer"&gt;Nrwl Community Slack&lt;/a&gt;&lt;br&gt;
📹 &lt;a href="https://www.youtube.com/nrwl_io" rel="noopener noreferrer"&gt;Nrwl Youtube Channel&lt;/a&gt;&lt;br&gt;
🥚 &lt;a href="https://egghead.io/courses/scale-react-development-with-nx-4038" rel="noopener noreferrer"&gt;Free Egghead course&lt;/a&gt;&lt;br&gt;
🧐 &lt;a href="https://nrwl.io/contact-us" rel="noopener noreferrer"&gt;Need help with Angular, React, Monorepos, Lerna or Nx? Talk to us 😃&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, if you liked this, click the ❤️ and make sure to follow &lt;a href="https://twitter.com/juristr" rel="noopener noreferrer"&gt;Juri&lt;/a&gt; and &lt;a href="https://twitter.com/nxdevtools" rel="noopener noreferrer"&gt;Nx&lt;/a&gt; on Twitter for more!&lt;/p&gt;

</description>
      <category>nx</category>
      <category>monorepo</category>
      <category>devtools</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Modern Angular</title>
      <dc:creator>Colum Ferry</dc:creator>
      <pubDate>Tue, 23 Nov 2021 17:47:30 +0000</pubDate>
      <link>https://forem.com/nrwl/modern-angular-2mp0</link>
      <guid>https://forem.com/nrwl/modern-angular-2mp0</guid>
      <description>&lt;h2&gt;
  
  
  What is Modern Angular Tooling?
&lt;/h2&gt;

&lt;p&gt;With the Angular CLI no longer including a complete out-of-the-box development solution, it is more important than ever to understand the tools at our disposal to improve the developer experience when building Angular applications.&lt;/p&gt;

&lt;p&gt;Modern Angular Tooling is the term used to describe modern tools that will enable you and your team to build a comprehensive development environment. This development environment takes advantage of the latest improvements in the JavaScript ecosystem to improve productivity, consistency, reliability, scalability and developer experience when building Angular applications and libraries. &lt;/p&gt;

&lt;h2&gt;
  
  
  What are the Modern Angular Tools?
&lt;/h2&gt;

&lt;p&gt;We consider Modern Tools to be additional tools that can and should be used when building Angular applications and Angular libraries. These tools tend to focus on a more architectural side of software development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cypress.io/"&gt;Cypress&lt;/a&gt; - E2E Testing&lt;/strong&gt;&lt;br&gt;
The Angular CLI no longer includes an e2e solution when it generates an Angular application. That means no more Protractor out of the box with Angular applications. Therefore, this leaves a considerable gap in the out-of-the-box experience with Angular. Cypress has one of the best developer experiences and can be used for more than just testing Angular applications. It’s straightforward to write, run and debug tests with Cypress, and it supports cross-browser testing, supporting Chrome-family browsers (including Electron and Edge) and Firefox. There is also an open proposal to support &lt;a href="https://github.com/cypress-io/cypress/issues/6422"&gt;Safari&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://jestjs.io/"&gt;Jest&lt;/a&gt; - Unit Testing&lt;/strong&gt;&lt;br&gt;
Jest is the best-in-class unit testing tool in the JavaScript ecosystem right now. The Angular CLI includes Karma when generating an application, another unit testing tool; however, Karma is noticeably much slower, reducing feedback cycle time. &lt;br&gt;
Jest is much faster, runs without launching a browser and can use JSDom to allow for unit testing of component templates. It can also run in parallel, allowing for a much faster feedback cycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://eslint.org/"&gt;ESLint&lt;/a&gt; - Linting&lt;/strong&gt;&lt;br&gt;
ESLint has become the defacto linting tool in the JavaScript world, even replacing TSLint in TypeScript projects. The Angular CLI included TSLint in the past for linting Angular applications, but when TSLint support ended in December 2020, the Angular CLI stopped including with TSLint. In fact, the Angular CLI no longer includes any linting tool out of the box. &lt;br&gt;
ESLint is a pluggable linting tool used across the JavaScript ecosystem that allows you to quickly enforce best practices and even implement automatic fixing of problems within your workspace. It makes enforcing team-wide consistency easier and helps avoid common causes of bugs within JavaScript. And it’s fast!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://storybook.js.org/"&gt;Storybook&lt;/a&gt; - Component Design&lt;/strong&gt;&lt;br&gt;
Frontend frameworks and libraries have converged to a single core design paradigm centred around components. Building these components in the context of your application is fine, but it can become cumbersome. It can lead to inconsistencies in design and a drop in productivity as you have to launch your application every time you want to check your changes while trying to match the design across multiple areas within your application. &lt;br&gt;
Storybook aims to streamline the process of designing and developing components by allowing you to build components in isolation, increasing productivity as you no longer have to launch your application, as well as increasing consistency as it becomes your source of truth for component documentation. You can easily see all the components (with stories) in your workspace from the Storybook application. Storybook also supports addons that can help you test things like the Accessibility of your components (with the &lt;a href="https://storybook.js.org/addons/@storybook/addon-a11y"&gt;A11y Addon&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://prettier.io/"&gt;Prettier&lt;/a&gt; - Formatting&lt;/strong&gt;&lt;br&gt;
When working with multiple developers, consistent code style and formatting is key to rapid development. Time spent figuring out how to read code is time wasted actually reading code. Prettier is an automated, opinionated, formatting tool that removes human emotion from code styling while producing a consistent code style for all developers in the team. Prettier reduces the need for a style guide for your development, removes the question of code style from code reviews, and lets developers focus on writing code. All of this results in improving the team's overall productivity and the readability of the codebase!&lt;/p&gt;
&lt;h2&gt;
  
  
  Why should we care about it?
&lt;/h2&gt;

&lt;p&gt;There are many reasons why we should strive to use Modern Tools with Angular. Many of these reasons were mentioned above in association with each of the tools that we would define as necessary for Modern Angular Development. When we combine them all into one development workspace, we get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Better productivity&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Storybook can help build components without running your application.&lt;/li&gt;
&lt;li&gt;Developers spend less time formatting and more time writing code.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster feedback (errors, tests, builds)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Faster testing tools leads to faster feedback on errors, tests and potential bugs that will have been introduced to the application.&lt;/li&gt;
&lt;li&gt;ESLint provides fast feedback on any code that breaks the rules and can even automatically fix that code for you.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better debugging&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Using Modern Tools, it becomes much easier to find and squash bugs and defects. &lt;/li&gt;
&lt;li&gt;They’ve all been built to work with the JavaScript ecosystem, which already contains excellent debugging tools, such as the Debug features in &lt;a href="https://code.visualstudio.com/"&gt;VSCode&lt;/a&gt; or the Chrome DevTools.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better guardrails for teams&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;This may seem contradictory. Why would you want to add restrictions to your team? There’s a &lt;a href="https://www.youtube.com/watch?v=X-Dn5ZBUZH0"&gt;Power in putting Constraints&lt;/a&gt; on your team.&lt;/li&gt;
&lt;li&gt;It takes the guesswork out of what is allowed and what is not and helps them focus on writing code consistently. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency across teams&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Maintaining consistency across all development teams working on the application is vital.&lt;/li&gt;
&lt;li&gt;It allows the company to easily onboard and offboard new developers and help to enable any developer to jump into any part of the codebase and understand the structure and patterns used to create the application, improving knowledge reuse.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comprehensive Testing&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;By writing both unit and e2e tests for our application, we create a comprehensive testing environment.&lt;/li&gt;
&lt;li&gt;This allows us to ensure that the happy paths through our application are guaranteed to work as we add more features and functionality to our applications.&lt;/li&gt;
&lt;li&gt;It also helps us improve our user experience by ensuring exception paths also provide our users with feedback to state that something has gone wrong.&lt;/li&gt;
&lt;li&gt;It helps provide confidence to developers making changes, ensuring that they haven’t introduced any regressions to the codebase.&lt;/li&gt;
&lt;li&gt;It helps bring junior developers up to speed as they can get a comprehensive overview of how the application is expected to function, and they can make changes knowing that they will be informed (&lt;em&gt;quickly&lt;/em&gt;) if they break something.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  How can Nx help?
&lt;/h2&gt;

&lt;p&gt;Nx provides a complete and comprehensive development workspace for building applications. It supports Angular (&lt;em&gt;and other libraries and frameworks!&lt;/em&gt;). It seamlessly integrates all the Modern Tooling mentioned above, instantly improving your developer experience, your team’s productivity, and the scalability and reliability of your applications. &lt;br&gt;
You can get up and running with an Angular application containing the tools above (while still getting all the benefits of Angular) by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-nx-workspace --preset=angular
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you prefer Yarn, you can use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn create nx-workspace --preset=angular
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will create your workspace and integrate the tools above automatically. The only tool that will not be integrated automatically is Storybook. However, Nx makes it easy to integrate that too! After creating your workspace, all you need to do is run the following command at the root of your workspace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run ng g @nrwl/angular:storybook-configuration 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, using Yarn&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn ng g @nrwl/angular:storybook-configuration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To read more about Nx and how it can help your development see our docs on &lt;a href="https://nx.dev/l/a/angular/overview"&gt;Angular&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>javascript</category>
      <category>nx</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Fear of Being Ordinary</title>
      <dc:creator>Victor Savkin</dc:creator>
      <pubDate>Wed, 28 Oct 2020 18:26:46 +0000</pubDate>
      <link>https://forem.com/nrwl/fear-of-being-ordinary-16mi</link>
      <guid>https://forem.com/nrwl/fear-of-being-ordinary-16mi</guid>
      <description>&lt;p&gt;Reading &lt;a href="https://www.amazon.com/Zen-Art-Motorcycle-Maintenance-Inquiry/dp/0060589469"&gt;"Zen and the Art of Motorcycle Maintenance"&lt;/a&gt; made me want to understand the tools I use, to tinker with them, to truly make them my own.&lt;/p&gt;

&lt;p&gt;I already had an &lt;a href="https://ergodox-ez.com"&gt;ErgoDox&lt;/a&gt;, a highly-customized editor, high income, and a lot of free time — a good foundation for a multi-year obsession with customization.&lt;/p&gt;

&lt;p&gt;This post is the reflection of why I — and I believe many other programmers — get into this, how unproductive it can be, and how to snap out of it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Reasons
&lt;/h1&gt;

&lt;p&gt;Why do we get obsessed about the exactly right keyboard setup, color schemes, fonts, task management systems? &lt;/p&gt;

&lt;h2&gt;
  
  
  Better for Productivity
&lt;/h2&gt;

&lt;p&gt;We programmers like to feel productive. It shouldn't be surprising that I told myself that having 7 layers on my keyboard is simply necessary for productivity. I'll get more PRs merged! &lt;/p&gt;

&lt;p&gt;This is how you imagine yourself when you type on a split keyboard:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HmyaQskQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ul3dch29vzpnnzhm8njr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HmyaQskQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ul3dch29vzpnnzhm8njr.png" alt="Jimmy Page Playing Guitar"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course not right away. It takes weeks to develop muscle memory (this is assuming you don't change the setup, and of course you do change it). No, these gains are realized in the long run. This is an investment! &lt;/p&gt;

&lt;p&gt;I applied this across the board. A todo app? Tried all of them, and even built my own. Productivity systems? Tried every variation of every system.&lt;/p&gt;

&lt;p&gt;But any time I actually tried to measure it, the result was always the same. I'm faster on my ThinkPad using the default settings, and I'm just as organized when I use a plain notebook. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mTmol6iV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ca9an89ge1twzcl8mhro.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mTmol6iV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ca9an89ge1twzcl8mhro.jpg" alt="Notebook"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Better for Health
&lt;/h2&gt;

&lt;p&gt;No one in the right mind would spend $500 bucks on a keyboard. But what about a keyboard that is good for your health? Sign me in.&lt;/p&gt;

&lt;p&gt;I tried a dozen ergonomic keyboards over the years. Most of them have pictures like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--doMX8pTr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5edruurs9glz50grnx31.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--doMX8pTr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5edruurs9glz50grnx31.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why? I have carpal tunnel syndrome. At some point it was so bad I had to switch to using my left hand when brushing my teeth. I just could not hold a toothbrush in my right hand. Tried every keyboard and mouse under the sun. Nothing helped. &lt;/p&gt;

&lt;p&gt;One day I started using a boring low-profile keyboard and paid a lot more attention to the position of my wrists. It didn't fix the problem completely, but it helped a lot. &lt;/p&gt;

&lt;p&gt;That's actually what I was told when I had an assessment done at Google. But being a techy, it’s hard to believe that the solution is that simple. &lt;/p&gt;

&lt;h1&gt;
  
  
  What is Customization Actually Good For?
&lt;/h1&gt;

&lt;p&gt;If we don't actually do it for productivity or health reasons, why do we do it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Fear of Being Ordinary
&lt;/h2&gt;

&lt;p&gt;Desire to be unique — not like others — is a deep psychological need for many, myself included. I grew up in a small Russian village. Half of the students in my school could barely read. So when I started moving from city to city and from country to country, I always carried with me the feeling of being "not quite as"; not being interesting enough.&lt;/p&gt;

&lt;p&gt;But being ordinary is not bad. &lt;a href="https://en.wikipedia.org/wiki/Cogito,_ergo_sum"&gt;"Cogito, ergo sum"&lt;/a&gt; makes each of us irreplaceable and not comparable to each other, by construction. Nothing else is needed, folks. This is, of course, a challenging sell to many, especially in North America where the culture is obsessed with superheroes and outcasts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Desire for Control
&lt;/h2&gt;

&lt;p&gt;Country is on fire? Marriage is falling apart? We can’t fix that, but we can spend hours choosing the best font and color scheme for our editors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Desire to Escape
&lt;/h2&gt;

&lt;p&gt;Need to make a difficult decision? Make a risky bet in business? I could do that, but I could also switch my todo list cause my tasks are getting out of hand and it stresses me out.&lt;/p&gt;

&lt;h1&gt;
  
  
  What I Mean and What I Don’t Mean
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Are you saying I don’t need to be productive?
&lt;/h3&gt;

&lt;p&gt;I believe being overly obsessed with productivity is unhealthy. But putting that aside, in general you do want to be good at what you do. So, yes, learn the tools you use, but most of the gains are in understanding the tools themselves. Learn Bash instead of crafting a perfect &lt;code&gt;.bashrc&lt;/code&gt;. Learn how to touch type fast, instead of rearranging keys on the keyboard. &lt;/p&gt;

&lt;p&gt;And don’t forget: we are knowledge workers. So things that affect our productivity the most are high-quality sleep, good air, good diet, etc. Invest into that.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is wrong with self-expression?
&lt;/h3&gt;

&lt;p&gt;In general, there is nothing wrong with it. If you want to assemble and program your keyboard because that’s who you are, go ahead. That’s a great hobby. If it gives you joy, that’s fantastic. But it’s important to know that is what it is: a hobby, a means of self-expression. Choosing to use a 60% keyboard is like choosing to wear skinny jeans. It won’t give you the productivity boost you are looking for.&lt;/p&gt;

&lt;p&gt;The problem is when it becomes an unhealthy coping mechanism. There are better ways to deal with the anxiety created by the lack of control (e.g., meditation, CBT/Stoicism, therapy).&lt;/p&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;Many great engineers enjoy customizing their dev setup, often obsessively. The given reasons are productivity and health. I think it doesn’t really help with either. Instead, the excessive customization is a way (often not the best one) to fulfil basic psychological needs.  &lt;/p&gt;

</description>
      <category>productivity</category>
      <category>reflection</category>
    </item>
    <item>
      <title>Run Details View: Build Insights for Nx on Nx Cloud</title>
      <dc:creator>nrwl.io</dc:creator>
      <pubDate>Fri, 25 Sep 2020 15:00:12 +0000</pubDate>
      <link>https://forem.com/nrwl/run-details-view-build-insights-for-nx-on-nx-cloud-4mo4</link>
      <guid>https://forem.com/nrwl/run-details-view-build-insights-for-nx-on-nx-cloud-4mo4</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/iGpwcNuYtlY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Learn about Run Details View in Nx Cloud in less than 5 minutes — &lt;a href="https://youtu.be/iGpwcNuYtlY"&gt;https://youtu.be/iGpwcNuYtlY&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Somewhere on a remote team far, far away…
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;👨🏼‍💻 “Hey, I’ve got failing tests locally again :(”&lt;br&gt;
👩🏾‍💻 “Which ones?”&lt;br&gt;
👨🏼‍💻 “Uh…I’m not actually sure yet, I was running nx affected:test and it ended up testing all of the UI projects.”&lt;br&gt;
👩🏾‍💻 “Can you show me?”&lt;br&gt;
👨🏼‍💻 “Oh no…I’ve lost the command line output. My terminal buffer wasn’t big enough. I guess I’ll need to run the failed projects again.”&lt;br&gt;
👩🏾‍💻 “Ok. Just give me a ping when you’re ready.”&lt;br&gt;
👨🏼‍💻 “Sure. This might take a while…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Running tests against lots of projects can be a problem even in a relatively small monorepo. Your command line output could be thousands of lines long and this can be a nightmare to sift through when looking for the output of that one failing project and the tests that caused the entire run to fail. There has to be a better way.&lt;/p&gt;

&lt;p&gt;In CI/CD systems there is often a way to drill into the various runs that happen while testing the integrity of the latest pull request or merge into the main branch, but what about locally? Wouldn’t it be great if I could view that output in a better way and even share that with a colleague so we can get right into fixing the problem rather than trying to find it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect to Nx Cloud!
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;👩🏾‍💻 “I’ve had an idea, why don’t we connect our repo to the Nx Cloud app?”&lt;br&gt;
👨🏼‍💻 “How do I do that?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We’ve added a new argument, &lt;code&gt;--scan&lt;/code&gt;, that you can pass to any nx command. It will prompt you to connect to our &lt;a href="https://nx.app"&gt;Nx Cloud&lt;/a&gt; platform if necessary and then not only will you benefit from our free tier of compute caching but we will also log the output of that run and provide you a place to explore and share it!&lt;/p&gt;

&lt;p&gt;Say I want to run the test targets in all the projects:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JFc0kbLM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2ASpP6yniAsMKvCbPW.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JFc0kbLM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2ASpP6yniAsMKvCbPW.png" alt="Terminal output to connect to Nx Cloud for free" width="880" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After completing the run you’ll see a message that gives you a URL where you can view your run details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bZc4I_25--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AU3HHI0DxGBiDaU7x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bZc4I_25--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AU3HHI0DxGBiDaU7x.png" alt="Nx Cloud terminal output: see run details link" width="880" height="50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👀 Run Details View
&lt;/h2&gt;

&lt;p&gt;Following that URL will take you to the brand new Run Details view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BsKVC6YR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AozN-5mrFviTMZ7_A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BsKVC6YR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AozN-5mrFviTMZ7_A.png" alt="Nx Cloud run details view" width="880" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the top you can see summary information about the run itself: how long it took, how many tasks failed and even some information about the machine that executed the run. Below all that are the executed tasks themselves, in this case each will be the execution of the test target against an individual project.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Simple Filtering
&lt;/h2&gt;

&lt;p&gt;You can see at a glance the execution time of each task, whether it was a success or failure and even whether or not it was a cache hit or miss, but there might be too many to visually deal with. The project filter and toggles at the top allow you to reduce the tasks to only the ones you need to focus on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--60jkjjHf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2Apg1oEzcPSJWL8J_R.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--60jkjjHf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2Apg1oEzcPSJWL8J_R.png" alt="Nx Cloud run details filtering options" width="880" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve found the project you need, you can expand the view to dig into the command line output itself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uX9h_prK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AYQlB6R01p0N4QzBECzV2yg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uX9h_prK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AYQlB6R01p0N4QzBECzV2yg.png" alt="Run Details command line output details" width="880" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔒 Access Control
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;👨🏼‍💻 “This is great, but should we really leave these open to anyone?”&lt;br&gt;
👩🏾‍💻 “Let’s set up an organisation…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you’ve never connected your monorepo to Nx Cloud before the run detail view will be available to anyone with the unique url, so you can share that immediately. However, you’ll also see a message at the top of the page informing you that the workspace is currently public.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qObbF3aC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2ARAmuw79NdFu6AvLf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qObbF3aC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2ARAmuw79NdFu6AvLf.png" alt="Claim your workspace prompt on Nx Cloud" width="880" height="67"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Claiming the workspace connects it to your Nx Cloud account and allows you to limit access to only those in your organisation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--feThKq6P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2A3LE0zkxMLT1UbY0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--feThKq6P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2A3LE0zkxMLT1UbY0x.png" alt="Claim Workspace page on Nx Cloud prompting for access token" width="880" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To access the run detail view from a claimed workspace you will need an Nx Cloud account. Workspace owners can easily invite members to collaborate in their organisation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y3raRTbg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AI9-9mSCv5pxxxuQ6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y3raRTbg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AI9-9mSCv5pxxxuQ6.png" alt="Invite members to Nx Cloud workspace" width="880" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🤝 Simpler Investigation &amp;amp; Collaboration
&lt;/h2&gt;

&lt;p&gt;One you’ve connected your monorepo to Nx Cloud we will provide unique urls to view each run that anyone working in the repository makes against it. We won’t record the command line output for every run unless you provide the &lt;code&gt;--scan&lt;/code&gt; argument each time, but if you’re sure you want to do this for every run, you can add &lt;code&gt;"scan" : true&lt;/code&gt; to the &lt;code&gt;tasksRunnerOptions&lt;/code&gt; in &lt;code&gt;nx.json&lt;/code&gt; at the root of the repository.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👨🏼‍💻 “Amazing, but what about all the runs that happen on each PR?”&lt;br&gt;
👩🏾‍💻 “I think there’s an app for that…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🤖 GitHub Integration
&lt;/h2&gt;

&lt;p&gt;You can integrate our new &lt;a href="https://github.com/apps/nx-cloud"&gt;Nx Cloud companion app&lt;/a&gt; into your GitHub repos and get a full report in your pull requests including links to each of the runs performed against them. You can see a full report from a recent pull request into our public &lt;a href="https://github.com/nrwl/nx"&gt;Nx GitHub repository&lt;/a&gt; below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jcQ0vuiP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AwDqi1_T17xYyS-sM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jcQ0vuiP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AwDqi1_T17xYyS-sM.png" alt="Nx Cloud bot on GitHubNx Cloud bot on GitHub" width="880" height="698"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We use Nx Cloud on all our repositories at &lt;a href="https://nrwl.io"&gt;Nrwl&lt;/a&gt; and we’ve already found it extremely useful for investigating runs with a lot of output and when collaborating remotely. We hope you find it useful too!&lt;/p&gt;

&lt;h2&gt;
  
  
  👋 Epilogue
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;👨🏼‍💻 “Hey, I’ve got failing tests again. Here’s the run detail — &lt;a href="https://nx.app/runs/%E2%80%A6%E2%80%9D"&gt;https://nx.app/runs/…”&lt;/a&gt;&lt;br&gt;
👩🏾‍💻 “Thanks! Oh, I see which test it is. I think I know what might be the problem. Do you want to jump on a call and we can fix this now?”&lt;br&gt;
👨🏼‍💻 “Sure, let’s go!”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WFKJl9u4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d0lfozs0i46sgh22gptr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WFKJl9u4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d0lfozs0i46sgh22gptr.png" alt="Nx Cloud" width="880" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Run Details View is available now for free with &lt;a href="https://nx.dev"&gt;Nx dev tools&lt;/a&gt; on &lt;a href="https://nx.app"&gt;Nx Cloud&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Author:&lt;/strong&gt; Jo Hanna Pearce, &lt;a href="https://twitter.com/jdpearce"&gt;@jdpearce&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Video:&lt;/strong&gt; Rareș Matei, &lt;a href="https://twitter.com/__rares"&gt;@__rares&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nx</category>
      <category>buildtool</category>
      <category>codesharing</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
