UNPKG

peer-deps-externals-webpack-plugin

Version:

Webpack plugin to automatically add a library's peerDependencies to its bundle's externals.

42 lines (36 loc) 1.08 kB
'use strict'; const ExternalModuleFactoryPlugin = require('webpack/lib/ExternalModuleFactoryPlugin'); class PeerDepsExternalsPlugin { apply(compiler) { const peerDependencies = getPeerDependencies(); // webpack 4+ if (compiler.hooks) { compiler.hooks.compile.tap('compile', params => { new ExternalModuleFactoryPlugin( compiler.options.output.libraryTarget, peerDependencies ).apply(params.normalModuleFactory); }); // webpack < 4, remove this in next major version } else { compiler.plugin('compile', params => { params.normalModuleFactory.apply( new ExternalModuleFactoryPlugin( compiler.options.output.libraryTarget, peerDependencies ) ); }); } } } function getPeerDependencies() { try { const { resolve } = require('path'); const pkg = require(resolve(process.cwd(), 'package.json')); return Object.keys(pkg.peerDependencies); } catch(err) { return []; } } module.exports = PeerDepsExternalsPlugin;