🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

precinct

Package Overview
Dependencies
Maintainers
3
Versions
79
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

precinct

Unleash the detectives

latest
Source
npmnpm
Version
12.3.2
Version published
Weekly downloads
4.4M
3.04%
Maintainers
3
Weekly downloads
 
Created
Source

precinct

CI npm version npm downloads

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');

// Pass in a file's content or an AST
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
      }
    });
    
    // Or supply a fully custom parser:
    precinct(content, {
      walker: {
        parser: myCustomParser // any object with a .parse(src, opts) method
      }
    });
    

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

Keywords

modules

FAQs

Package last updated on 06 May 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts