<!doctype html>
<html>
  <title>npm-submodule</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-submodule.html">npm-submodule</a></h1> <p>Add a package as a git submodule</p>

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

<pre><code>npm.commands.submodule(packages, callback)</code></pre>

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

<p>For each package specified, npm will check if it has a git repository url
in its package.json description then add it as a git submodule at
<code>node_modules/&lt;pkg name&gt;</code>.</p>

<p>This is a convenience only.  From then on, it&#39;s up to you to manage
updates by using the appropriate git commands.  npm will stubbornly
refuse to update, modify, or remove anything with a <code>.git</code> subfolder
in it.</p>

<p>This command also does not install missing dependencies, if the package
does not include them in its git repository.  If <code>npm ls</code> reports that
things are missing, you can either install, link, or submodule them yourself,
or you can do <code>npm explore &lt;pkgname&gt; -- npm install</code> to install the
dependencies into the submodule folder.</p>

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

<ul><li>npm help json</li><li>git help submodule</li></ul>
</div>
<p id="footer">npm-submodule &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>
