title: Avoiding auto-adding a large dependency while building a node module. Is peerDependencies the only way?
body: <p>I am building an NPM module for modals. 
  I want to use a heavy weight UI package named <a href="https://github.com/callemall/material-ui" rel="nofollow noreferrer">material-ui</a>. Most of my projects already have it so I would like the package.json to follow this logic:</p>
  
  <ol>
  <li>check if package already available</li>
  <li>available? good - don't install it</li>
  <li>not available? install it</li>
  </ol>
  
  <p>I know that peerDependencies looks for existing packages which is good in the case my project has it. What happens if I put the package in dependencies? Does it always get installed or does it depends on whether it already exists? does it depend on versioning? are there any good options here? Clearly I would like to avoid complicated installation instructions like:</p>
  
  <pre><code>npm install modal-package
  </code></pre>
  
  <p>if your project doesn't have material-ui:</p>
  
  <pre><code>npm install material-ui@^0.17.1
  </code></pre>