78 lines
2.3 KiB
Markdown
78 lines
2.3 KiB
Markdown
### Precinct [![npm](http://img.shields.io/npm/v/precinct.svg)](https://npmjs.org/package/precinct) [![npm](http://img.shields.io/npm/dm/precinct.svg)](https://npmjs.org/package/precinct)
|
|
|
|
> Unleash the detectives
|
|
|
|
`npm install --save precinct`
|
|
|
|
Uses the appropriate detective to find the dependencies of a file or its AST.
|
|
|
|
Supports:
|
|
|
|
* JavaScript modules: AMD, CommonJS, and ES6.
|
|
* Typescript
|
|
* CSS Preprocessors: Sass, Stylus, and Less
|
|
* CSS (PostCSS)
|
|
|
|
### Usage
|
|
|
|
```js
|
|
var precinct = require('precinct');
|
|
|
|
var content = fs.readFileSync('myFile.js', 'utf8');
|
|
|
|
// Pass in a file's content or an AST
|
|
var deps = precinct(content);
|
|
```
|
|
|
|
You may pass options (to individual detectives) based on the module type via an optional second object argument `detective(content, options), for example:
|
|
|
|
Example call: `precinct(content, { amd: { skipLazyLoaded: true } });`
|
|
|
|
- The supported module type prefixes are `amd`, `commonjs`, `es6`, `sass`, `stylus`, `less`
|
|
|
|
Current options:
|
|
|
|
* `amd.skipLazyLoaded`: tells the AMD detective to omit lazy-loaded dependencies (i.e., inner requires).
|
|
* `es6.mixedImports`: allows for all dependencies to be fetched from a file that contains both CJS and ES6 imports.
|
|
- Note: This will work for any file format that contains an es6 import.
|
|
* `css.url`: tells the CSS detective to include `url()` references to images, fonts, etc.
|
|
|
|
|
|
Finding non-JavaScript (ex: Sass and Stylus) dependencies:
|
|
|
|
```js
|
|
var content = fs.readFileSync('styles.scss', 'utf8');
|
|
|
|
var deps = precinct(content, { type: 'sass' });
|
|
var deps2 = precinct(content, { type: 'stylus' });
|
|
```
|
|
|
|
Or, if you just want to pass in a filepath and get the dependencies:
|
|
|
|
```js
|
|
var paperwork = require('precinct').paperwork;
|
|
|
|
var deps = paperwork('myFile.js');
|
|
var deps2 = paperwork('styles.scss');
|
|
```
|
|
|
|
###### `precinct.paperwork(filename, options)`
|
|
|
|
Supported options:
|
|
|
|
* `includeCore`: (default: true) set to `false` to exclude core Node dependencies from the list of dependencies.
|
|
* `fileSystem`: (default: undefined) set to an alternative `fs` implementation that will be used to read the file path.
|
|
* You may also pass detective-specific configuration like you would to `precinct(content, options)`.
|
|
|
|
#### CLI
|
|
|
|
*Assumes a global install of `npm install -g precinct`*
|
|
|
|
`precinct [options] path/to/file`
|
|
|
|
* Run `precinct --help` to see options
|
|
|
|
### License
|
|
|
|
MIT
|