<!doctype html>
<html>
  <title>npm-init</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-init.html">npm-init</a></h1> <p>Interactively create a package.json file</p>

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

<pre><code>npm init</code></pre>

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

<p>This will ask you a bunch of questions, and then write a package.json for you.</p>

<p>It attempts to make reasonable guesses about what you want things to be set to,
and then writes a package.json file with the options you&#39;ve selected.</p>

<p>If you already have a package.json file, it&#39;ll read that first, and default to
the options in there.</p>

<p>It is strictly additive, so it does not delete options from your package.json
without a really good reason to do so.</p>

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

<ul><li><a href="https://github.com/isaacs/init-package-json">https://github.com/isaacs/init-package-json</a></li><li><a href="../files/package.json.html">package.json(5)</a></li><li><a href="../cli/npm-version.html">npm-version(1)</a></li></ul>
</div>
<p id="footer">npm-init &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>
