hunt-affected
v1.0.0-alpha.2
Published
Detect where your file exports are used and potentially afffected by it's changes
Downloads
6
Maintainers
Readme
hunt-affected
Detect where your file exports are used and potentially afffected by it's changes.
Quick start
Intalling via npm:
npm i hunt-affectedAnd 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:
dynamicImportclassPropertiesflowCommentsobjectRestSpreadfunctionBindjsxflow(.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';
}
}
);