hunt-affected
TypeScript icon, indicating that this package has built-in type declarations

1.0.0-alpha.2 • Public • Published

hunt-affected

Detect where your file exports are used and potentially afffected by it's changes.

Quick start

Intalling via npm:

npm i hunt-affected

And feed the function with a list of absolute file paths you would like to check, and the entry points like this:

const huntAffected = require('hunt-affected');

huntAffected(['a.js', 'b.js', 'c.js'], [{ source: 'a.js', name: 'default' }]);

Following @babel/parser plugins are enabled on .js|.jsx|.ts|.tsx files by default:

  • dynamicImport
  • classProperties
  • flowComments
  • objectRestSpread
  • functionBind
  • jsx
  • flow (.js and .jsx only)
  • typescript (.ts and .tsx only)

Other than aboves, you will need to enable by:

huntAffected(
  ['a.js', 'b.js', 'c.js'],
  [{ source: 'a.js', name: 'default' }]
  {
    parserOptions: {
      plugins: ['jsx', 'dynamicImport']
    }
  }
);

All the options in parserOptions will be passed to @babel/parser directly. @babel/parser options can be found here.

By default, it will try to read file with NodeJs default file system and decode them with utf-8.

You may replace this behavior by passing a customised loader function:

huntAffected(
  ['a.js', 'b.js', 'c.js'],
  [{ source: 'a.js', name: 'default' }]
  {
    loader: async (path) {
      return await myWayToReadFile(path);
    }
  }
);

And when it tries to resolve file imported module paths to absolute file path, it will use Webpack's enhanced-resolve by default, and tries to resolve to real files.

You may replace this behavior by passing a customised resolver function:

huntAffected(
  ['a.js', 'b.js', 'c.js'],
  [{ source: 'a.js', name: 'default' }]
  {
    resolver: async (base: string, target: string) => {
      return 'resolved/file/path.js';
    }
  }
);

Package Sidebar

Install

npm i hunt-affected

Weekly Downloads

0

Version

1.0.0-alpha.2

License

MIT

Unpacked Size

23.1 kB

Total Files

20

Last publish

Collaborators

  • jennieji