New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dependants-parser

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dependants-parser

Parse dependants given a module, a root and an import syntax

  • 0.0.5
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
7
Maintainers
1
Weekly downloads
 
Created
Source

dependants-parser

Build Status Bitdeli Badge

Utility to recursively fetch dependant modules by parsing require syntaxes targeting a specified local module using a given a root directory and an import expression regex.

The problem

While writing a custom watch-build tool I needed some quick and easy way to figure out which modules depended on the file that changed would be emitted to in order to avoid re-compiling every file in the codebase at every change.

This tool is easily extensible to work with most pre-processors & syntaxes as long as their import command can be expressed with a regular expression and the modules are located relatively to the target file.

By now Stylus and CommonJS regexes are available by default in this module.

Install

npm install dependants-parser

Test

Test with Mocha by running

npm test

Simple usage

Considering the following tree:

.
├── index.js
└── stylus
    ├── root.styl
    └── target.styl

stylus/root.styl:

@import 'target.styl'

index.js:

var dependants = require('dependants-tree');

var out = dependants.findSync(
	'stylus/target.styl',		// Target dependency
	'stylus',					// Modules root
	dependants.patterns.stylus	// Import expression regex
	);

console.log(out);
// [ 'abs/path/to/stylus/root.styl' ]

Exports

.findSync(filepath, root, importRegex, [ match ])

Returns an array containing absolute paths of all modules that depend on filepath found in root, given an import expression syntax.

  • filepath (String) - Path to target module. This needs to be the real filename.
  • root - (String) Directory to recursively scan for dependants.
  • importRegex - (RegExp|Object) Import syntax expression. Used to parse out a file's dependency. You can also pass an object containing the keys 'exp' (RegExp) and 'offset' (number) of the result module string
  • [ match ] - (RegExp) Filename match expression. Use to filter files to scan.
.patterns

Contains simple ready-to-use regexes for local import syntaxes

  • .stylus - @import 'module' Stylus syntax pattern
  • .commonjs - require('module') CommonJS syntax pattern
  • .jade - include module | extend module Jade syntax pattern

Contribute

It would be great to provide import syntaxes for other languages / pre-processors (LESS, SASS, SCSS, Jade, Handlebars) this module could be used for.

Please feel free to drop a pull request if you're using this module with a custom expressions or improving the current ones / writing more tests.

Regexes are tested in test/regexes.js.

FAQs

Package last updated on 04 Dec 2013

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc