unused-exports-webpack-plugin
v0.0.1
Published
A webpack plugin to detect unused exports based on webpack's moduleGraph
Maintainers
Readme
Unused Exports Webpack Plugin
A webpack plugin to detect unused exports based on webpack's moduleGraph. This plugin helps you identify and remove unused code to optimize your bundle size and improve code quality.
Features
- 🔍 Accurate Detection: Uses webpack's internal moduleGraph for precise unused export detection
- ⚙️ Flexible Configuration: Support for include/exclude paths, custom base paths, and callback functions
- 🚀 Tree-shaking Compatible: Works seamlessly with webpack's tree-shaking optimization
- 📊 Detailed Results: Provides comprehensive information about unused exports
- 🛠️ Easy Integration: Simple setup with minimal configuration required
Installation
npm install unused-exports-webpack-pluginBasic Usage
import UnusedExportsPlugin from 'unused-exports-webpack-plugin';
export default {
// ... your webpack config
plugins: [
new UnusedExportsPlugin({
onFinish: (result) => {
console.log('Unused exports:', result);
}
})
],
optimization: {
usedExports: true,
sideEffects: false
}
};Configuration Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| onFinish | Function | () => {} | Callback function called with detection results |
| ignorePaths | Array<string\|RegExp> | ['node_modules'] | Paths to ignore during detection |
| includePaths | Array<string\|RegExp> | [] | Paths to include (empty means all) |
| basePath | string | process.cwd() | Base path for relative path resolution |
Advanced Usage
new UnusedExportsPlugin({
onFinish: (result) => {
// Process results
result.forEach(({ resource, providedNames, unusedNames }) => {
console.log(`File: ${resource}`);
console.log(`Unused exports: ${unusedNames.join(', ')}`);
});
},
ignorePaths: ['node_modules', 'dist', '**/*.test.js'],
includePaths: ['src/**/*.js', 'lib/**/*.js'],
basePath: path.resolve(__dirname, 'src')
})Result Format
The onFinish callback receives an array of objects with the following structure:
[
{
resource: '/path/to/file.js', // Absolute file path
providedNames: ['func1', 'func2'], // All exported names
unusedNames: ['func2'] // Unused exported names
}
]Examples
Check out the example directory for complete usage examples including:
- Basic plugin setup
- Advanced configuration options
- Custom result processing
- Integration with different project structures
Testing
Run the automated tests to verify plugin functionality:
cd test
npm install
npm testUse Cases
- Code Cleanup: Identify and remove unused exports to reduce bundle size
- Code Review: Detect unused code in CI/CD pipelines
- Refactoring Assistant: Ensure no exports are left behind during refactoring
- Performance Optimization: Improve application performance by removing unused code
- Library Maintenance: Keep public APIs clean and minimal
Requirements
- Webpack 5.0.0 or higher
- Node.js 14.0.0 or higher
Notes
- The plugin is based on webpack's moduleGraph for detection and requires tree-shaking to be enabled
- Some dynamic imports or conditionally imported modules may not be accurately detected
- Recommended for use in development environments to avoid additional overhead in production builds
- Results are provided after the webpack compilation is complete
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details.
Changelog
0.0.1
- Initial release
- Basic unused exports detection
- Configuration options for paths and callbacks
- Support for webpack 5
