precinct

Unleash the detectives
npm install 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, Scss, Stylus, and Less
- CSS (PostCSS)
- Vue
Usage
const fs = require('fs');
const precinct = require('precinct');
const content = fs.readFileSync('myFile.js', 'utf8');
const 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
},
type: 'amd'
});
- The supported module type prefixes are:
amd, commonjs, css, es6, less, sass, scss, stylus, ts, tsx, vue.
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.
-
walker: options passed directly to the underlying node-source-walk instance.
Example:
precinct(content, {
walker: {
allowImportExportEverywhere: true
}
});
precinct(content, {
walker: {
parser: myCustomParser
}
});
Finding non-JavaScript (ex: Sass and Stylus) dependencies:
const fs = require('fs');
const content = fs.readFileSync('styles.scss', 'utf8');
const sassDeps = precinct(content, { type: 'sass' });
const stylusDeps = precinct(content, { type: 'stylus' });
Or, if you just want to pass in a filepath and get the dependencies:
const { paperwork } = require('precinct');
const deps = paperwork('myFile.js');
const deps2 = paperwork('styles.scss');
precinct.paperwork(filename, options)
Supported options:
includeCore: (default: true) set to false to exclude core Node.js dependencies from the list of dependencies.
fileSystem: (default: undefined) set to an alternative fs implementation that will be used to read the file path.
walker: (default: undefined) options forwarded to the underlying node-source-walk instance - same as the top-level walker option.
- You may also pass detective-specific configuration like you would to
precinct(content, options).
CLI
Assumes a global install precinct with npm install -g precinct.
precinct [options] path/to/file
Run precinct --help to see all options.
License
MIT