<!doctype html>
<html>
  <title>npm-tag</title>
  <meta http-equiv="content-type" value="text/html;utf-8">
  <link rel="stylesheet" type="text/css" href="../../static/style.css">

  <body>
    <div id="wrapper">
<h1><a href="../api/npm-tag.html">npm-tag</a></h1> <p>Tag a published version</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<pre><code>npm.commands.tag(package@version, tag, callback)</code></pre>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Tags the specified version of the package with the specified tag, or the
<code>--tag</code> config if not specified.</p>

<p>The &#39;package@version&#39; is an array of strings, but only the first two elements are
currently used.</p>

<p>The first element must be in the form package@version, where package
is the package name and version is the version number (much like installing a
specific version).</p>

<p>The second element is the name of the tag to tag this version with. If this
parameter is missing or falsey (empty), the default froom the config will be
used. For more information about how to set this config, check
<code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p>
</div>
<p id="footer">npm-tag &mdash; npm@1.3.21</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>
