find-imports

Find all imported modules in JavaScript files.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
find-imports
3771.1.06 years ago8 years agoMinified + gzip package size for find-imports in KB

Readme

find-imports build status Coverage Status
NPM
Find all imported modules in JavaScript files. It's useful for bundling 3rd-party libraries into a vendor.js using webpack. For example:
var webpack = require('webpack');
var findImports = require('find-imports');

// Webpack Configuration
module.exports = {
    entry: {
        app: [
            './src/index.js'
        ],
        vendor: findImports('src/**/*.{js,jsx}', { flatten: true })
    },
    output: {
        path: path.join(__dirname, 'dist'),
        filename: '[name].js'
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js')
    ]
};

Installation

npm install --save-dev find-imports

Usage

The default options only return package imports:
import findImports from 'find-imports';

const files = [
    // glob pattern
    'src/**/*.{js,jsx}',

    // use negative glob pattern to exclude files
    '!src/**/*.spec.js'
];

findImports(files);
// → { 'src/index.jsx':
//     [ 'lodash',
//       'async',
//       'jsuri',
//       'react',
//       'react-dom',
//       'react-router' ] }

To flatten the output:
findImports(files, { flatten: true });
// → [ 'lodash',
//     'async',
//     'jsuri',
//     'react',
//     'react-dom',
//     'react-router' ]

To return absolute and relative imports:
findImports(files, {
    absoluteImports: true,
    relativeImports: true
});
// → { 'src/index.jsx':
//     [ 'lodash',
//       'async',
//       'jsuri',
//       'react',
//       'react-dom',
//       'react-router',
//       '/index.styl',
//       './index.css' ] }

To only return absolute and relative imports (no packages):
findImports(files, {
    absoluteImports: true,
    relativeImports: true,
    packageImports: false
});
// → { 'src/index.jsx':
//     [ '/index.styl',
//       './index.css' ] }

Options

Below are the options with their default values:
{
    flatten: false,
    packageImports: true,
    absoluteImports: false,
    relativeImports: false
}

flatten

Type: Boolean Default: false
Sets true to flatten the output and filter duplicate ones.

packageImports

Type: Boolean Default: true
Sets true to return package imports.

absoluteImports

Type: Boolean Default: false
Sets true to return absolute imports.

relativeImports

Type: Boolean Default: false
Sets false to return relative imports.

License

Copyright (c) 2016 Cheton Wu
Licensed under the MIT License.