diff options
Diffstat (limited to 'doc/blog/npm/npm-1-0-the-new-ls.md')
-rw-r--r-- | doc/blog/npm/npm-1-0-the-new-ls.md | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/doc/blog/npm/npm-1-0-the-new-ls.md b/doc/blog/npm/npm-1-0-the-new-ls.md deleted file mode 100644 index 9fef76c31..000000000 --- a/doc/blog/npm/npm-1-0-the-new-ls.md +++ /dev/null @@ -1,144 +0,0 @@ -title: npm 1.0: The New "ls" -author: Isaac Schlueter -date: Thu Mar 17 2011 23:22:17 GMT-0700 (PDT) -status: publish -category: npm -slug: npm-1-0-the-new-ls - -<p><em>This is the first in a series of hopefully more than 1 posts, each detailing some aspect of npm 1.0.</em></p> - -<p>In npm 0.x, the <code>ls</code> command was a combination of both searching the registry as well as reporting on what you have installed.</p> - -<p>As the registry has grown in size, this has gotten unwieldy. Also, since npm 1.0 manages dependencies differently, nesting them in <code>node_modules</code> folder and installing locally by default, there are different things that you want to view.</p> - -<p>The functionality of the <code>ls</code> command was split into two different parts. <code>search</code> is now the way to find things on the registry (and it only reports one line per package, instead of one line per version), and <code>ls</code> shows a tree view of the packages that are installed locally.</p> - -<p>Here’s an example of the output:</p> - -<pre style="background:#333;color:#ccc;overflow:auto;padding:2px;"><code>$ npm ls -npm@1.0.0 /Users/isaacs/dev-src/js/npm -├── semver@1.0.1 -├─┬ ronn@0.3.5 -│ └── opts@1.2.1 -└─┬ express@2.0.0rc3 <span style="background:#000;color:#0f0;">extraneous</span> - ├─┬ connect@1.1.0 - │ ├── qs@0.0.7 - │ └── mime@1.2.1 - ├── mime@1.2.1 - └── qs@0.0.7 -</code></pre> - -<p>This is after I’ve done <code>npm install semver ronn express</code> in the npm source directory. Since express isn’t actually a dependency of npm, it shows up with that “extraneous” marker.</p> - -<p>Let’s see what happens when we create a broken situation:</p> - -<pre style="background:#333;color:#ccc;overflow:auto;padding:2px;"><code>$ rm -rf ./node_modules/express/node_modules/connect -$ npm ls -npm@1.0.0 /Users/isaacs/dev-src/js/npm -├── semver@1.0.1 -├─┬ ronn@0.3.5 -│ └── opts@1.2.1 -└─┬ express@2.0.0rc3 <span style="background:#000;color:#0f0;">extraneous</span> - ├── <span style="background:#000;color:#f00;">UNMET DEPENDENCY</span> connect >= 1.1.0 < 2.0.0 - ├── mime@1.2.1 - └── qs@0.0.7 -</code></pre> - -<p>Tree views are great for human readability, but some times you want to pipe that stuff to another program. For that output, I took the same datastructure, but instead of building up a treeview string for each line, it spits out just the folders like this:</p> - -<pre style="background:#333;color:#ccc;overflow:auto;padding:2px;"><code>$ npm ls -p -/Users/isaacs/dev-src/js/npm -/Users/isaacs/dev-src/js/npm/node_modules/semver -/Users/isaacs/dev-src/js/npm/node_modules/ronn -/Users/isaacs/dev-src/js/npm/node_modules/ronn/node_modules/opts -/Users/isaacs/dev-src/js/npm/node_modules/express -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/connect -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/connect/node_modules/qs -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/connect/node_modules/mime -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/mime -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/qs -</code></pre> - -<p>Since you sometimes want a bigger view, I added the <code>--long</code> option to (shorthand: <code>-l</code>) to spit out more info:</p> - -<pre style="background:#333;color:#ccc;overflow:auto;padding:2px;"><code>$ npm ls -l -npm@1.0.0 -│ /Users/isaacs/dev-src/js/npm -│ A package manager for node -│ git://github.com/isaacs/npm.git -│ http://npmjs.org/ -├── semver@1.0.1 -│ ./node_modules/semver -│ The semantic version parser used by npm. -│ git://github.com/isaacs/node-semver.git -├─┬ ronn@0.3.5 -│ │ ./node_modules/ronn -│ │ markdown to roff and html converter -│ └── opts@1.2.1 -│ ./node_modules/ronn/node_modules/opts -│ Command line argument parser written in the style of commonjs. To be used with node.js -└─┬ express@2.0.0rc3 <span style="background:#000;color:#0f0;">extraneous</span> - │ ./node_modules/express - │ Sinatra inspired web development framework - ├─┬ connect@1.1.0 - │ │ ./node_modules/express/node_modules/connect - │ │ High performance middleware framework - │ │ git://github.com/senchalabs/connect.git - │ ├── qs@0.0.7 - │ │ ./node_modules/express/node_modules/connect/node_modules/qs - │ │ querystring parser - │ └── mime@1.2.1 - │ ./node_modules/express/node_modules/connect/node_modules/mime - │ A comprehensive library for mime-type mapping - ├── mime@1.2.1 - │ ./node_modules/express/node_modules/mime - │ A comprehensive library for mime-type mapping - └── qs@0.0.7 - ./node_modules/express/node_modules/qs - querystring parser - -$ npm ls -lp -/Users/isaacs/dev-src/js/npm:npm@1.0.0:::: -/Users/isaacs/dev-src/js/npm/node_modules/semver:semver@1.0.1:::: -/Users/isaacs/dev-src/js/npm/node_modules/ronn:ronn@0.3.5:::: -/Users/isaacs/dev-src/js/npm/node_modules/ronn/node_modules/opts:opts@1.2.1:::: -/Users/isaacs/dev-src/js/npm/node_modules/express:express@2.0.0rc3:EXTRANEOUS::: -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/connect:connect@1.1.0:::: -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/connect/node_modules/qs:qs@0.0.7:::: -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/connect/node_modules/mime:mime@1.2.1:::: -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/mime:mime@1.2.1:::: -/Users/isaacs/dev-src/js/npm/node_modules/express/node_modules/qs:qs@0.0.7:::: -</code></pre> - -<p>And, if you want to get at the globally-installed modules, you can use ls with the global flag:</p> - -<pre style="background:#333;color:#ccc;overflow:auto;padding:2px;"><code>$ npm ls -g -/usr/local -├─┬ A@1.2.3 -> /Users/isaacs/dev-src/js/A -│ ├── B@1.2.3 -> /Users/isaacs/dev-src/js/B -│ └─┬ npm@0.3.15 -│ └── semver@1.0.1 -├─┬ B@1.2.3 -> /Users/isaacs/dev-src/js/B -│ └── A@1.2.3 -> /Users/isaacs/dev-src/js/A -├── glob@2.0.5 -├─┬ npm@1.0.0 -> /Users/isaacs/dev-src/js/npm -│ ├── semver@1.0.1 -│ └─┬ ronn@0.3.5 -│ └── opts@1.2.1 -└── supervisor@0.1.2 -> /Users/isaacs/dev-src/js/node-supervisor - -$ npm ls -gpl -/usr/local::::: -/usr/local/lib/node_modules/A:A@1.2.3::::/Users/isaacs/dev-src/js/A -/usr/local/lib/node_modules/A/node_modules/npm:npm@0.3.15::::/Users/isaacs/dev-src/js/A/node_modules/npm -/usr/local/lib/node_modules/A/node_modules/npm/node_modules/semver:semver@1.0.1::::/Users/isaacs/dev-src/js/A/node_modules/npm/node_modules/semver -/usr/local/lib/node_modules/B:B@1.2.3::::/Users/isaacs/dev-src/js/B -/usr/local/lib/node_modules/glob:glob@2.0.5:::: -/usr/local/lib/node_modules/npm:npm@1.0.0::::/Users/isaacs/dev-src/js/npm -/usr/local/lib/node_modules/npm/node_modules/semver:semver@1.0.1::::/Users/isaacs/dev-src/js/npm/node_modules/semver -/usr/local/lib/node_modules/npm/node_modules/ronn:ronn@0.3.5::::/Users/isaacs/dev-src/js/npm/node_modules/ronn -/usr/local/lib/node_modules/npm/node_modules/ronn/node_modules/opts:opts@1.2.1::::/Users/isaacs/dev-src/js/npm/node_modules/ronn/node_modules/opts -/usr/local/lib/node_modules/supervisor:supervisor@0.1.2::::/Users/isaacs/dev-src/js/node-supervisor -</code></pre> - -<p>Those <code>-></code> flags are indications that the package is link-installed, which will be covered in the next installment.</p> |