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

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

<pre><code>npm submodule &lt;pkg&gt;</code></pre>

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

<p>If the specified package has a git repository url in its package.json
description, then this command will 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><a href="../files/package.json.html">package.json(5)</a></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>
