<?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>DEV Community: Ruy Adorno</title>
    <description>The latest articles on DEV Community by Ruy Adorno (@ruyadorno).</description>
    <link>https://dev.to/ruyadorno</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%2Fuser%2Fprofile_image%2F66669%2Fdae5fd89-191a-45fc-b640-39f9c78029e6.jpg</url>
      <title>DEV Community: Ruy Adorno</title>
      <link>https://dev.to/ruyadorno</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ruyadorno"/>
    <language>en</language>
    <item>
      <title>Node.js v19.2.0 Release</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Tue, 29 Nov 2022 20:08:38 +0000</pubDate>
      <link>https://dev.to/ruyadorno/nodejs-v1920-release-d4</link>
      <guid>https://dev.to/ruyadorno/nodejs-v1920-release-d4</guid>
      <description>&lt;p&gt;A new version of the Node.js runtime is out now! 🥳&lt;/p&gt;

&lt;h2&gt;
  
  
  Notable changes:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  buffer:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; add new &lt;code&gt;File&lt;/code&gt; class&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  deps:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;update timezone&lt;/li&gt;
&lt;li&gt;update V8 to 10.8.168.20&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  doc:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;deprecate use of invalid ports in &lt;code&gt;url.parse&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  util:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;add fast path for utf8 encoding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See the full changelog: &lt;a href="https://nodejs.org/en/blog/release/v19.2.0/" rel="noopener noreferrer"&gt;https://nodejs.org/en/blog/release/v19.2.0/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>release</category>
    </item>
    <item>
      <title>npm workspaces: npm run and exec</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Wed, 24 Mar 2021 12:43:15 +0000</pubDate>
      <link>https://dev.to/ruyadorno/npm-workspaces-npm-run-and-exec-1lg0</link>
      <guid>https://dev.to/ruyadorno/npm-workspaces-npm-run-and-exec-1lg0</guid>
      <description>&lt;h3&gt;
  
  
  I bring good news!
&lt;/h3&gt;

&lt;p&gt;Workspaces support for both &lt;code&gt;npm run&lt;/code&gt; and &lt;code&gt;npm exec&lt;/code&gt; landed today in &lt;strong&gt;&lt;a href="https://github.com/npm/cli/releases/tag/v7.7.0"&gt;npm@7.7.0&lt;/a&gt;&lt;/strong&gt;, it adds the new &lt;code&gt;-w&lt;/code&gt; and &lt;code&gt;-ws&lt;/code&gt; config options that allows for running scripts in workspaces from the top-level folder, e.g:&lt;/p&gt;

&lt;p&gt;assuming a file structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── package.json -&amp;gt;  { "workspaces": ["packages/*"] }
└── packages
    ├── a
    │   ├── index.js
    │   └── package.json
    ├── b
    │   ├── index.js
    │   └── package.json
    └── c
        ├── index.js
        └── package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's now possible to run a script in a given workspace. In order to run one of the scripts available in the workspace named &lt;code&gt;a&lt;/code&gt;, at location: &lt;code&gt;./packages/a/&lt;/code&gt; you may run from the root of your project, either of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;npm run &amp;lt;script-name&amp;gt; -w a&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm run &amp;lt;script-name&amp;gt; -w ./packages/a&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also supports the &lt;code&gt;test|start|stop|restart&lt;/code&gt; top level comands, so if you're using any of these you can just add &lt;code&gt;-w &amp;lt;workspaces-name&amp;gt;&lt;/code&gt; and it should work as expected, e.g:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;npm test -w a&lt;/code&gt; (will run the tests of workspace &lt;code&gt;a&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In case you want to run a script against &lt;strong&gt;all&lt;/strong&gt; the configured workspaces, there's a &lt;code&gt;workspaces&lt;/code&gt; configuration option that enables just that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;npm test -ws&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lastly it's also possible to run scripts in a group of workspaces by using the path to their parent folder as the &lt;code&gt;workspace&lt;/code&gt; config value. That means running &lt;code&gt;npm test -w ./packages&lt;/code&gt; will run tests in all workspaces nested at the &lt;code&gt;./packages&lt;/code&gt; location.&lt;/p&gt;

&lt;h3&gt;
  
  
  Want to learn more about it?
&lt;/h3&gt;

&lt;p&gt;We updated the docs, see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;npm run&lt;/code&gt; docs: &lt;a href="https://docs.npmjs.com/cli/v7/commands/npm-run-script#workspaces-support"&gt;https://docs.npmjs.com/cli/v7/commands/npm-run-script#workspaces-support&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;npm exec&lt;/code&gt; docs: &lt;a href="https://docs.npmjs.com/cli/v7/commands/npm-exec#workspaces-support"&gt;https://docs.npmjs.com/cli/v7/commands/npm-exec#workspaces-support&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;workspaces&lt;/code&gt; docs: &lt;a href="https://docs.npmjs.com/cli/v7/using-npm/workspaces"&gt;https://docs.npmjs.com/cli/v7/using-npm/workspaces&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may also want to check out the changelog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/npm/cli/releases/tag/v7.7.0"&gt;https://github.com/npm/cli/releases/tag/v7.7.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>npm</category>
      <category>cli</category>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>npm diff</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Mon, 01 Feb 2021 14:16:00 +0000</pubDate>
      <link>https://dev.to/ruyadorno/npm-diff-23dh</link>
      <guid>https://dev.to/ruyadorno/npm-diff-23dh</guid>
      <description>&lt;p&gt;The &lt;strong&gt;npm cli&lt;/strong&gt; just added a new &lt;code&gt;npm diff&lt;/code&gt; command that show changes between registry-published tarballs, similar to &lt;code&gt;git diff&lt;/code&gt; but tracking versions of packages in the registry instead of commits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing &lt;strong&gt;npm diff&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The idea for a &lt;code&gt;npm diff&lt;/code&gt; command has been around since last year when I first wrote a &lt;a href="https://github.com/npm/rfcs/pull/144" rel="noopener noreferrer"&gt;npm diff RFC&lt;/a&gt; that got rather positive feedback from the community.&lt;/p&gt;

&lt;p&gt;Providing more &lt;strong&gt;transparency to changes&lt;/strong&gt; to packages installed in a given project was the main motivation but being a package author myself, I quickly saw a chance to improve package maintainers' lives by also having workflows to compare the contents of the package you're currently working on.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8o1f249k5lbic18huy46.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8o1f249k5lbic18huy46.png" alt="npm diff usage example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Following up are some examples of how to use &lt;code&gt;npm diff&lt;/code&gt; in both the package consumer and package author scenarios.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Diffing packages from the registry
&lt;/h2&gt;

&lt;p&gt;You can point to any two different published package versions and get &lt;strong&gt;git-like patch output&lt;/strong&gt; that shows the difference between file contents in them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;$ npm diff --diff=ntl@5.0.0 --diff=ntl@5.1.0
&lt;span class="gh"&gt;diff --git a/README.md b/README.md
index v5.0.0..v5.1.0 100644
&lt;/span&gt;&lt;span class="gd"&gt;--  a/README.md
&lt;/span&gt;&lt;span class="gi"&gt;+++ b/README.md
&lt;/span&gt;&lt;span class="p"&gt;@@ -36,6 +36,7 @@&lt;/span&gt;
     + [UI Size](#ui-size)
   * [Repeat the last ran task](#arrows_counterclockwise-repeat-the-last-ran-task)
   * [Run multiple tasks](#m-run-multiple-tasks)
&lt;span class="gi"&gt;+    + [Preserve selection order](#run-multiple-tasks-in-order-of-selection)
&lt;/span&gt;   * [Run in autocomplete or fuzzy search mode](#fast_forward-run-in-autocomplete-or-fuzzy-search-mode)
   * [Tips](#white_check_mark-tips)
     + [ntl as default task](#ntl-as-default-task)
&lt;span class="p"&gt;@@ -85,7 +86,9 @@&lt;/span&gt;
 - Multiple interactive interfaces (menu list, autocomplete fuzzy search)
 - Many options to customize the UI (exclude scripts, amount of items, etc)
 - Easy to repeat last ran script (`nt` and `rerun` options)
&lt;span class="gd"&gt;-- Run multiple tasks (can also easily repeat multiple ran tasks)
&lt;/span&gt;&lt;span class="gi"&gt;+- Run multiple tasks
+  - Repeat previously set of ran tasks
+  - Preserve order of selection
&lt;/span&gt; - Customize rerun cache options
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep in mind the &lt;code&gt;--diff&lt;/code&gt; arguments accepts any valid &lt;a href="https://www.npmjs.com/package/npm-package-arg" rel="noopener noreferrer"&gt;npm install arguments&lt;/a&gt; meaning that you can also target local folders or git repositories on top of using semver ranges and registry tags.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diffing packages you're updating
&lt;/h2&gt;

&lt;p&gt;Using a single argument is a handy shortcut to diff the contents of a local installed package to the contents you'd get with the version specified by the &lt;code&gt;--diff&lt;/code&gt; option.&lt;/p&gt;

&lt;p&gt;It also provides a shortcut that replicates the logic of the wanted version returned by &lt;code&gt;npm outdated&lt;/code&gt; when using only the &lt;strong&gt;package name&lt;/strong&gt; and omitting any version/tags. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;$ npm diff --diff=abbrev
&lt;span class="gh"&gt;diff --git a/package.json b/package.json
index v1.1.0..v1.1.1 100644
&lt;/span&gt;&lt;span class="gd"&gt;--  a/package.json
&lt;/span&gt;&lt;span class="gi"&gt;+++ b/package.json
&lt;/span&gt;&lt;span class="p"&gt;@@ -1,6 +1,6 @@&lt;/span&gt;
 {
   "name": "abbrev",
&lt;span class="gd"&gt;-  "version": "1.1.0",
&lt;/span&gt;&lt;span class="gi"&gt;+  "version": "1.1.1",
&lt;/span&gt;   "description": "Like ruby's abbrev module, but in js",
   "author": "Isaac Z. Schlueter &amp;lt;i@izs.me&amp;gt;",
   "main": "abbrev.js",
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Diffing local changes to a package
&lt;/h2&gt;

&lt;p&gt;This is the workflow &lt;strong&gt;package authors&lt;/strong&gt; will find the most helpful. When working on a package that is published to the registry, you can get a diff output between the contents from you local file system comparing it to the &lt;code&gt;latest&lt;/code&gt; published version by just running &lt;code&gt;npm diff&lt;/code&gt; (no arguments).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;$ npm diff
&lt;span class="gh"&gt;diff --git a/package.json b/package.json
index v3.1.1..v3.2.0-beta.1 100644
&lt;/span&gt;&lt;span class="gd"&gt;--  a/package.json
&lt;/span&gt;&lt;span class="gi"&gt;+++ b/package.json
&lt;/span&gt;&lt;span class="p"&gt;@@ -1,6 +1,6 @@&lt;/span&gt;
 {
   "name": "ipt",
&lt;span class="gd"&gt;-  "version": "3.1.1",
&lt;/span&gt;&lt;span class="gi"&gt;+  "version": "3.2.0-beta.1",
&lt;/span&gt;   "description": "iPipeTo - The Node.js cli interactive workflow",
   "repository": "ruyadorno/ipt",
   "author": {
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filter by file names
&lt;/h2&gt;

&lt;p&gt;In some cases the full diff patch output might be too verbose and you're only interested in a single file or folder, in that case you can provide these path names as &lt;strong&gt;positional arguments&lt;/strong&gt; and they will be treated as &lt;strong&gt;filters&lt;/strong&gt; limiting the output to only contents of the files defined in these patterns (similar to how &lt;code&gt;git diff&lt;/code&gt; works).&lt;/p&gt;

&lt;p&gt;e.g: use &lt;code&gt;npm diff package.json&lt;/code&gt; to only print diffs in the &lt;code&gt;package.json&lt;/code&gt; file, &lt;code&gt;npm diff lib/&lt;/code&gt; to limit diff output to files inside a &lt;code&gt;lib&lt;/code&gt; folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  More options
&lt;/h2&gt;

&lt;p&gt;A few more options from &lt;code&gt;git diff&lt;/code&gt; are implemented, such as a &lt;code&gt;--diff-name-only&lt;/code&gt; flag to only print the file names of changed files, or &lt;code&gt;--diff-ignore-all-space&lt;/code&gt; very useful to ignore padding spaces/tabs and print shorter diff outputs.&lt;/p&gt;

&lt;p&gt;If you want to learn more about the different options, make sure to read the &lt;a href="https://github.com/npm/cli/blob/latest/docs/content/commands/npm-diff.md" rel="noopener noreferrer"&gt;npm diff docs&lt;/a&gt;. 😊&lt;/p&gt;

&lt;h2&gt;
  
  
  ⬇️ Get it now
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;npm diff&lt;/code&gt; was introduced in &lt;code&gt;npm@7.5.0&lt;/code&gt;, to make sure you have the latest v7 version install it now with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm install -g npm@7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  - Happy diffing everyone!
&lt;/h3&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>javascript</category>
      <category>cli</category>
    </item>
    <item>
      <title>npm7 Highlights in 1min</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Wed, 28 Oct 2020 15:42:20 +0000</pubDate>
      <link>https://dev.to/ruyadorno/npm7-highlights-in-1min-n75</link>
      <guid>https://dev.to/ruyadorno/npm7-highlights-in-1min-n75</guid>
      <description>&lt;p&gt;Hey folks!&lt;/p&gt;

&lt;p&gt;I presented at a GitHub virtual meetup a quick demonstration of the highlights in &lt;strong&gt;npm7&lt;/strong&gt; and thought it would be nice to add bullet points and make it a quick visual reference for folks who want a 1min tour of how the new (and tweaked) features look like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://speakerdeck.com/ruyadorno/npm-v7-highlights"&gt;Click here&lt;/a&gt; (or at the image below) in order to see the slides over at SpeakerDeck 😊&lt;/p&gt;

&lt;p&gt;&lt;a href="https://speakerdeck.com/ruyadorno/npm-v7-highlights"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y7WnONSw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4axdj76h0lz1mmfns2wl.png" alt="See slides at SpeakerDeck" width="880" height="658"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Also dropped the link on Twitter:&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ygZyQRLT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1227014800133251075/YabYOcAO_normal.jpg" alt="Ruy Adorno profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Ruy Adorno
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/ruyadorno"&gt;@ruyadorno&lt;/a&gt;
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Took some time to add notes to the npm7 Highlights slide deck presented yesterday in the GitHub Presente! Online Meetup 😄&lt;br&gt;&lt;br&gt;Make sure to check it out: &lt;a href="https://t.co/xVwgDTFKGK"&gt;speakerdeck.com/ruyadorno/npm-…&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      12:00 PM - 28 Oct 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1321421455654031360" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1321421455654031360" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1321421455654031360" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;Hope you find it useful 😃&lt;/p&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>javascript</category>
      <category>cli</category>
    </item>
    <item>
      <title>Announcing npm7</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Tue, 13 Oct 2020 18:14:00 +0000</pubDate>
      <link>https://dev.to/ruyadorno/announcing-npm7-16j0</link>
      <guid>https://dev.to/ruyadorno/announcing-npm7-16j0</guid>
      <description>&lt;p&gt;It's been a very long and crazy ride but I'm happy to share that the project I've been working so hard since I joined the npm team more than an year ago is finally out! &lt;strong&gt;npm7&lt;/strong&gt; is the new major version of the npm cli 😍&lt;/p&gt;

&lt;p&gt;TLDR; &lt;code&gt;npm install -g npm@7&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;First let's highlight the major additions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;workspaces! finally the top-requested feature from our userbase makes its way into a stable release line 🎉&lt;/li&gt;
&lt;li&gt;auto-installing peer-dependencies again 📦&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Improving DX
&lt;/h2&gt;

&lt;p&gt;There are some smaller changes/additions/tweaks that will hopefully continue to help improving the user experience, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;new &lt;code&gt;npm exec&lt;/code&gt; command - same as &lt;code&gt;npx&lt;/code&gt; that now lives in the cli 😁&lt;/li&gt;
&lt;li&gt;a new package-lock format and support to install from &lt;code&gt;yarn.lock&lt;/code&gt; files 🚀&lt;/li&gt;
&lt;li&gt;improved &lt;code&gt;npm audit&lt;/code&gt; output! 😎&lt;/li&gt;
&lt;li&gt;new update notification system for the npm cli&lt;/li&gt;
&lt;li&gt;ability to install a git/GH pkg from a PR: &lt;code&gt;npm i user/project#pull/123&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;less verbose install output&lt;/li&gt;
&lt;li&gt;skip pre/post scripts when using &lt;code&gt;--ignore-scripts&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;new system to cache &lt;code&gt;node_modules&lt;/code&gt; data that makes &lt;code&gt;npm ls&lt;/code&gt; much faster&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;npm ls&lt;/code&gt; now defaults to top-level deps only, to see the entire tree you can now run &lt;code&gt;npm ls --all&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;slightly improved &lt;code&gt;npm fund&lt;/code&gt; output, highlighting funding urls and properly nesting deps&lt;/li&gt;
&lt;li&gt;And much, much more!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe29vogpxuso6kt4zeg3p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe29vogpxuso6kt4zeg3p.png" alt="I did a fanart illustration to celebrate this moment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Clean up work
&lt;/h2&gt;

&lt;p&gt;In reality npm7 is the long due refactor/clean up of the npm cli and it spawns a couple of very important internal packages to our ecosystem which are now the standard Programmatic APIs for npm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/npm/arborist/" rel="noopener noreferrer"&gt;@npmcli/arborist&lt;/a&gt; the new &lt;code&gt;npm install&lt;/code&gt; system&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/npm/config/" rel="noopener noreferrer"&gt;@npmcli/config&lt;/a&gt; the new npm config&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/npm/run-script/" rel="noopener noreferrer"&gt;@npmcli/run-script&lt;/a&gt; the new &lt;code&gt;npm run&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/npm/map-workspaces" rel="noopener noreferrer"&gt;@npmcli/map-workspaces&lt;/a&gt; read workspaces configs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/npm/libnpmfund" rel="noopener noreferrer"&gt;libnpmfund&lt;/a&gt; &lt;code&gt;npm fund&lt;/code&gt; Programmatic API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm really excited to see what this will enable in the community, for the first time it's going to be a trivial thing to &lt;code&gt;require('@npmcli/arborist')&lt;/code&gt; and have the same &lt;code&gt;npm install&lt;/code&gt; experience from within userland scripts without the need of spawning any subprocesses 🤩&lt;/p&gt;

&lt;p&gt;It's also worth mentioning that a lot of the work that went into this version is making sure every line of code and functionality is well-tested and stable so that we can better iterate on new features and bug fixes moving forward 😊&lt;/p&gt;

&lt;h2&gt;
  
  
  More?
&lt;/h2&gt;

&lt;p&gt;There are also new options/flags that goes along with some of the new features such as &lt;code&gt;--legacy-peer-deps&lt;/code&gt; and &lt;code&gt;--strict-peer-deps&lt;/code&gt; that help tweak the behavior of installing peer deps, &lt;code&gt;npm ls --all&lt;/code&gt; to see all installed deps since the default is now show top-level only, etc&lt;/p&gt;

&lt;p&gt;The team will be working hard on adding more tests and fixing any bugs that managed to slip through our beta test period 😄 Feel free to reach out to us in our &lt;a href="https://github.com/npm/cli/issues/new/choose" rel="noopener noreferrer"&gt;GitHub issue tracker&lt;/a&gt; that now have the best up-to-date links on how to report bugs, propose new features or get help.&lt;/p&gt;

&lt;p&gt;You can also read more about the release in the official channels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.npmjs.org/post/631877012766785536/release-v700" rel="noopener noreferrer"&gt;npm blog post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.blog/2020-10-13-presenting-v7-0-0-of-the-npm-cli/" rel="noopener noreferrer"&gt;GitHub blog post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⬇️ Get it now
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;npm7&lt;/strong&gt; is going to be a part of the upcoming &lt;strong&gt;node15&lt;/strong&gt; release but if you want to get it first, you can install it now with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g npm@7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Happy dependency-installing everyone!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7ddqe7ifmh279i5ac2lm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7ddqe7ifmh279i5ac2lm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>javascript</category>
      <category>cli</category>
    </item>
    <item>
      <title>npm@6.14.8</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Mon, 17 Aug 2020 21:52:19 +0000</pubDate>
      <link>https://dev.to/ruyadorno/npm-6-14-8-3lg7</link>
      <guid>https://dev.to/ruyadorno/npm-6-14-8-3lg7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---OogGMmW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w0phglanuv3swzn07rqh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---OogGMmW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w0phglanuv3swzn07rqh.png" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We just shipped a new version of the npm cli!&lt;/p&gt;

&lt;p&gt;⬇️ Get it now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -g npm@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check the full changelog, check out the &lt;a href="https://blog.npmjs.org/post/626732790304686080/release-6148"&gt;blog post in the official blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And that's it! 😎 Have an awesome week everyone!&lt;/p&gt;




&lt;p&gt;&lt;span&gt;Photo by &lt;a href="https://unsplash.com/@kellysikkema?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Kelly Sikkema&lt;/a&gt; on &lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>javascript</category>
      <category>cli</category>
    </item>
    <item>
      <title>Announcing the npm@7 beta!</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Tue, 11 Aug 2020 17:19:44 +0000</pubDate>
      <link>https://dev.to/ruyadorno/announcing-the-npm-7-beta-34</link>
      <guid>https://dev.to/ruyadorno/announcing-the-npm-7-beta-34</guid>
      <description>&lt;p&gt;We have just released the &lt;strong&gt;beta&lt;/strong&gt; version of &lt;strong&gt;npm v7&lt;/strong&gt; 🎉 &lt;/p&gt;

&lt;p&gt;It has &lt;strong&gt;workspaces&lt;/strong&gt; support along with many refactors that aim to make &lt;strong&gt;npm&lt;/strong&gt; better and better in the future 😎&lt;/p&gt;

&lt;p&gt;Are you feeling adventurous? Want to check out all the improvements? &lt;/p&gt;

&lt;h3&gt;
  
  
  ⬇️ Get it now:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -g npm@next-7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to also read the official announcement and check the full list of breaking changes in the &lt;a href="https://blog.npmjs.org/post/626173315965468672/npm-v7-series-beta-release-and-semver-major"&gt;&lt;strong&gt;npm&lt;/strong&gt; blog&lt;/a&gt; ❤️&lt;/p&gt;

&lt;h3&gt;
  
  
  🐛 Found any nasty bug?
&lt;/h3&gt;

&lt;p&gt;This is the first release of a &lt;strong&gt;beta&lt;/strong&gt; version and as such it's expected that there will still be problems to be found and things to be polished. &lt;/p&gt;

&lt;p&gt;Found any issues? &lt;a href="https://github.com/npm/cli/issues"&gt;Let us know!&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Have fun! 🚀
&lt;/h3&gt;




&lt;h6&gt;
  
  
  Cover image photo by &lt;a href="https://unsplash.com/@jamesponddotco?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;James Pond&lt;/a&gt; on &lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;
&lt;/h6&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>javascript</category>
      <category>cli</category>
    </item>
    <item>
      <title>npm@6.13.6</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Thu, 09 Jan 2020 23:35:41 +0000</pubDate>
      <link>https://dev.to/ruyadorno/npm-6-13-6-l59</link>
      <guid>https://dev.to/ruyadorno/npm-6-13-6-l59</guid>
      <description>&lt;p&gt;We just shipped a new &lt;strong&gt;npm&lt;/strong&gt; version 🚀&lt;/p&gt;

&lt;p&gt;Go ahead and get it in the usual ways:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g npm@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This release contain some bug fixes, including an important one that fixes issues using npm within &lt;strong&gt;docker&lt;/strong&gt; containers to install new packages.&lt;/p&gt;

&lt;p&gt;You can see the full changelog in the &lt;strong&gt;npm&lt;/strong&gt; blog: &lt;a href="https://blog.npmjs.org/post/190165702645/release-6136"&gt;https://blog.npmjs.org/post/190165702645/release-6136&lt;/a&gt;&lt;/p&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>javascript</category>
      <category>cli</category>
    </item>
    <item>
      <title>Node+JS Interactive 2019 talks</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Wed, 08 Jan 2020 21:56:11 +0000</pubDate>
      <link>https://dev.to/ruyadorno/node-js-interactive-2019-talks-3mc</link>
      <guid>https://dev.to/ruyadorno/node-js-interactive-2019-talks-3mc</guid>
      <description>&lt;p&gt;All talks from last Node+JS Interactive 2019 conference in Montreal are now available on Youtube! You can check the full playlist here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/playlist?list=PLfMzBWSH11xZPfWcC0DqFqKo_reMP58mw"&gt;https://www.youtube.com/playlist?list=PLfMzBWSH11xZPfWcC0DqFqKo_reMP58mw&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>conference</category>
      <category>nodejsinteractive</category>
    </item>
    <item>
      <title>$ cli --tools --for all-the-things</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Tue, 07 Jan 2020 13:05:37 +0000</pubDate>
      <link>https://dev.to/ruyadorno/cli-tools-for-all-the-things-5dpe</link>
      <guid>https://dev.to/ruyadorno/cli-tools-for-all-the-things-5dpe</guid>
      <description>&lt;p&gt;Turns out my talk at &lt;strong&gt;Node JS Interactive 2019&lt;/strong&gt; was not a completely failure! 🎉 yay! 🎉&lt;/p&gt;

&lt;p&gt;So as a reward I get to have a decent Youtube video of me presenting at a major conference that I can actually share with the world! ❤️ Are you interested in the intersection of &lt;strong&gt;cli&lt;/strong&gt; + &lt;strong&gt;JavaScript&lt;/strong&gt; + &lt;strong&gt;Node.js&lt;/strong&gt;? Or just a friend that wants to see me nervously trying to live code stuff in front of a big crowd? In any case here is the video, enjoy it 😄&lt;/p&gt;

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

&lt;p&gt;PS: Slides are available on &lt;strong&gt;SpeakerDeck&lt;/strong&gt;, you can browse them here:&lt;/p&gt;

&lt;p&gt;&lt;iframe class="speakerdeck-iframe ltag_speakerdeck" src="https://speakerdeck.com/player/ebe1bf123a98442c8feb4d577aa8bb20"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  Links
&lt;/h3&gt;

&lt;p&gt;Here are the original links for reference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Youtube video: &lt;a href="https://youtu.be/E0Oz5s9ZjKY"&gt;https://youtu.be/E0Oz5s9ZjKY&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Slides: &lt;a href="https://speakerdeck.com/ruyadorno/cli-tools-for-all-the-things"&gt;https://speakerdeck.com/ruyadorno/cli-tools-for-all-the-things&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Conference website: &lt;a href="https://njsi2019.sched.com/event/T5HY/cli-tools-for-all-the-things-ruy-adorno-npm"&gt;https://njsi2019.sched.com/event/T5HY/cli-tools-for-all-the-things-ruy-adorno-npm&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>cli</category>
      <category>nodejsinteractive</category>
    </item>
    <item>
      <title>Node+JS Interactive</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Wed, 11 Dec 2019 15:33:11 +0000</pubDate>
      <link>https://dev.to/ruyadorno/node-js-interactive-2ojf</link>
      <guid>https://dev.to/ruyadorno/node-js-interactive-2ojf</guid>
      <description>&lt;p&gt;Hi y'all, this week my home city is hosting the largest OpenJS foundation event &lt;a href="https://events19.linuxfoundation.org/events/nodejs-interactive-2019/"&gt;Node+JS Interactive&lt;/a&gt; ❤️ if you're around make sure to stop by and say hi! I might have some &lt;strong&gt;npm&lt;/strong&gt; swag too 😁&lt;/p&gt;

&lt;p&gt;Feel free to poke me on &lt;a href="https://twitter.com/ruyadorno"&gt;Twitter&lt;/a&gt;. Have a great conference week for those of you who are around!&lt;/p&gt;

</description>
      <category>node</category>
      <category>montreal</category>
      <category>conf</category>
      <category>nodejsinteractive</category>
    </item>
    <item>
      <title>Sneak peek of the new npm docs website</title>
      <dc:creator>Ruy Adorno</dc:creator>
      <pubDate>Wed, 04 Dec 2019 16:44:37 +0000</pubDate>
      <link>https://dev.to/ruyadorno/sneak-peek-of-the-new-npm-docs-website-4mo2</link>
      <guid>https://dev.to/ruyadorno/sneak-peek-of-the-new-npm-docs-website-4mo2</guid>
      <description>&lt;p&gt;Hi y’all, you probably don’t know yet but there’s a refresh of the npm docs website coming to you 😊&lt;/p&gt;

&lt;p&gt;A preview is available here: &lt;a href="https://preview-docs.npmjs.com/cli-commands/npm"&gt;https://preview-docs.npmjs.com/cli-commands/npm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to provide feedback in the comments and I’ll do my best to forward it to the rest of the team 😄&lt;/p&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>javascript</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
