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

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

<pre><code>npm.commands.init(args, callback)</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>

<p>Since this function expects to be run on the command-line, it doesn&#39;t work very
well as a programmatically. The best option is to roll your own, and since
JavaScript makes it stupid simple to output formatted JSON, that is the
preferred method. If you&#39;re sure you want to handle command-line prompting,
then go ahead and use this programmatically.</p>

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

<p><a href="../files/package.json.html">package.json(5)</a></p>
</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>
