<!doctype html>
<html>
  <title>npm-publish</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="../cli/npm-publish.html">npm-publish</a></h1> <p>Publish a package</p>

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

<pre><code>npm publish &lt;tarball&gt;
npm publish &lt;folder&gt;</code></pre>

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

<p>Publishes a package to the registry so that it can be installed by name.</p>

<ul><li><p><code>&lt;folder&gt;</code>:
A folder containing a package.json file</p></li><li><p><code>&lt;tarball&gt;</code>:
A url or file path to a gzipped tar archive containing a single folder
with a package.json file inside.</p></li></ul>

<p>Fails if the package name and version combination already exists in
the registry.  Overwrites when the &quot;--force&quot; flag is set.</p>

<h2 id="SEE-ALSO">SEE ALSO</h2>

<ul><li><a href="../misc/npm-registry.html">npm-registry(7)</a></li><li><a href="../cli/npm-adduser.html">npm-adduser(1)</a></li><li><a href="../cli/npm-owner.html">npm-owner(1)</a></li><li><a href="../cli/npm-deprecate.html">npm-deprecate(1)</a></li><li><a href="../cli/npm-tag.html">npm-tag(1)</a></li></ul>
</div>
<p id="footer">npm-publish &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>
