<title>npm-link</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="../../static/style.css">
+ <link rel="canonical" href="https://www.npmjs.org/doc/cli/npm-link.html">
+ <script async=true src="../../static/toc.js"></script>
<body>
<div id="wrapper">
-<h1><a href="../cli/npm-link.html">npm-link</a></h1> <p>Symlink a package folder</p>
-
-<h2 id="SYNOPSIS">SYNOPSIS</h2>
+<h1><a href="../cli/npm-link.html">npm-link</a></h1> <p>Symlink a package folder</p>
+<h2 id="synopsis">SYNOPSIS</h2>
<pre><code>npm link (in package folder)
-npm link <pkgname>
-npm ln (with any of the previous argument usage)</code></pre>
-
-<h2 id="DESCRIPTION">DESCRIPTION</h2>
-
+npm link [@<scope>/]<pkgname>
+npm ln (with any of the previous argument usage)
+</code></pre><h2 id="description">DESCRIPTION</h2>
<p>Package linking is a two-step process.</p>
-
<p>First, <code>npm link</code> in a package folder will create a globally-installed
-symbolic link from <code>prefix/package-name</code> to the current folder.</p>
-
+symbolic link from <code>prefix/package-name</code> to the current folder (see
+<code><a href="../misc/npm-config.html">npm-config(7)</a></code> for the value of <code>prefix</code>).</p>
<p>Next, in some other location, <code>npm link package-name</code> will create a
symlink from the local <code>node_modules</code> folder to the global symlink.</p>
-
<p>Note that <code>package-name</code> is taken from <code>package.json</code>,
not from directory name.</p>
-
+<p>The package name can be optionally prefixed with a scope. See <code><a href="../misc/npm-scope.html">npm-scope(7)</a></code>.
+The scope must be preceded by an @-symbol and followed by a slash.</p>
<p>When creating tarballs for <code>npm publish</code>, the linked packages are
"snapshotted" to their current state by resolving the symbolic links.</p>
-
-<p>This is
-handy for installing your own stuff, so that you can work on it and test it
-iteratively without having to continually rebuild.</p>
-
+<p>This is handy for installing your own stuff, so that you can work on it and
+test it iteratively without having to continually rebuild.</p>
<p>For example:</p>
-
<pre><code>cd ~/projects/node-redis # go into the package directory
npm link # creates global link
cd ~/projects/node-bloggy # go into some other package directory.
-npm link redis # link-install the package</code></pre>
-
-<p>Now, any changes to ~/projects/node-redis will be reflected in
-~/projects/node-bloggy/node_modules/redis/</p>
-
+npm link redis # link-install the package
+</code></pre><p>Now, any changes to ~/projects/node-redis will be reflected in
+~/projects/node-bloggy/node_modules/node-redis/. Note that the link should
+be to the package name, not the directory name for that package. </p>
<p>You may also shortcut the two steps in one. For example, to do the
above use-case in a shorter way:</p>
-
<pre><code>cd ~/projects/node-bloggy # go into the dir of your main project
-npm link ../node-redis # link the dir of your dependency</code></pre>
-
-<p>The second line is the equivalent of doing:</p>
-
+npm link ../node-redis # link the dir of your dependency
+</code></pre><p>The second line is the equivalent of doing:</p>
<pre><code>(cd ../node-redis; npm link)
-npm link redis</code></pre>
-
-<p>That is, it first creates a global link, and then links the global
+npm link node-redis
+</code></pre><p>That is, it first creates a global link, and then links the global
installation target into your project's <code>node_modules</code> folder.</p>
+<p>If your linked package is scoped (see <code><a href="../misc/npm-scope.html">npm-scope(7)</a></code>) your link command must
+include that scope, e.g.</p>
+<pre><code>npm link @myorg/privatepackage
+</code></pre><h2 id="see-also">SEE ALSO</h2>
+<ul>
+<li><a href="../misc/npm-developers.html">npm-developers(7)</a></li>
+<li><a href="../misc/npm-faq.html">npm-faq(7)</a></li>
+<li><a href="../files/package.json.html">package.json(5)</a></li>
+<li><a href="../cli/npm-install.html">npm-install(1)</a></li>
+<li><a href="../files/npm-folders.html">npm-folders(5)</a></li>
+<li><a href="../cli/npm-config.html">npm-config(1)</a></li>
+<li><a href="../misc/npm-config.html">npm-config(7)</a></li>
+<li><a href="../files/npmrc.html">npmrc(5)</a></li>
+</ul>
-<h2 id="SEE-ALSO">SEE ALSO</h2>
-
-<ul><li><a href="../misc/npm-developers.html">npm-developers(7)</a></li><li><a href="../misc/npm-faq.html">npm-faq(7)</a></li><li><a href="../files/package.json.html">package.json(5)</a></li><li><a href="../cli/npm-install.html">npm-install(1)</a></li><li><a href="../files/npm-folders.html">npm-folders(5)</a></li><li><a href="../cli/npm-config.html">npm-config(1)</a></li><li><a href="../misc/npm-config.html">npm-config(7)</a></li><li><a href="../files/npmrc.html">npmrc(5)</a></li></ul>
</div>
-<p id="footer">npm-link — npm@1.3.23</p>
-<script>
-;(function () {
-var wrapper = document.getElementById("wrapper")
-var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
- .filter(function (el) {
- return el.parentNode === wrapper
- && el.tagName.match(/H[1-6]/)
- && el.id
- })
-var l = 2
- , toc = document.createElement("ul")
-toc.innerHTML = els.map(function (el) {
- var i = el.tagName.charAt(1)
- , out = ""
- while (i > l) {
- out += "<ul>"
- l ++
- }
- while (i < l) {
- out += "</ul>"
- l --
- }
- out += "<li><a href='#" + el.id + "'>" +
- ( el.innerText || el.text || el.innerHTML)
- + "</a>"
- return out
-}).join("\n")
-toc.id = "toc"
-document.body.appendChild(toc)
-})()
-</script>
+
+<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
+<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
+<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
+<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
+<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
+<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
+<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
+<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
+</table>
+<p id="footer">npm-link — npm@2.14.4</p>
+