UNPKG

rollup-plugin-auto-external

Version:

Rollup plugin to automatically exclude package.json dependencies and peerDependencies from your bundle

47 lines (38 loc) 1.09 kB
const getBuiltins = require('builtins'); const readPkg = require('read-pkg'); const safeResolve = require('safe-resolve'); const semver = require('semver'); module.exports = ({ builtins = true, dependencies = true, packagePath, peerDependencies = true, } = {}) => ({ name: 'auto-external', options(opts) { const pkg = readPkg.sync(packagePath); let ids = []; if (dependencies && pkg.dependencies) { ids = ids.concat(Object.keys(pkg.dependencies)); } if (peerDependencies && pkg.peerDependencies) { ids = ids.concat(Object.keys(pkg.peerDependencies)); } if (builtins) { ids = ids.concat(getBuiltins(semver.valid(builtins))); } let external = ids; if (typeof opts.external === 'function') { external = id => opts.external(id) || ids .map(safeResolve) .filter(Boolean) .includes(id); } if (Array.isArray(opts.external)) { external = Array.from(new Set(opts.external.concat(ids))); } return Object.assign({}, opts, { external }); }, });