wmzy-trash/rollup-plugin-by-output(新しいタブで開きます)
主要言語: JavaScript
Apply plugins according to special output option, reduce config and save time.
- star 数
- 5
- watcher 数
- 1
- fork 数
- 0
- issue 数
- 12
- 最終更新
- 2023/01/05
主要言語: JavaScript
Apply plugins according to special output option, reduce config and save time.
Apply Rollup Plugin by OutputOptions
npm i -D rollup-plugin-by-output
// rollup.config.js import babel from 'rollup-plugin-babel'; import terser from 'rollup-plugin-terser'; import plugins, {file} from 'rollup-plugin-by-output'; export default { // ... plugins: plugins(babel(), [file(pkg.browser), terser()]), output: [ { globals: { lodash: '_' }, name: pkg.name, file: pkg.browser, format: 'umd' }, { file: pkg.main, format: 'cjs' }, { file: pkg.module, format: 'es' } ] };
Rollup support multiple outputs with the same input. But sometime we want to apply different plugins for these outputs. The most common scenario is apply the terser plugin for a minify bundle. Before we can write a config array, but there are a lot of duplicate code and operations.
This plugin (maybe not a plugin) gives you a slightly elegant and efficient solution for this scene.
import plugins, {when, whenAll, prop, format, file} from 'rollup-plugin-by-output';
{ //... plugins: [pluginA, when(filter, pluginB), pluginsC, ..., ...whenAll(anotherFilter, pluginD, pluginE)] }
same as:
{ // ... plugins: plugins(pluginA, [filter, pluginB],// same as when pluginsC, ..., [anotherFilter, pluginD, pluginE] // same as whenAll and flat ) }
The filter is a predicate function, the parameter is an output config object. If the filter return a truthy value, the rest plugins will be apply for the output.
when and whenAll is convenient for few filters and plugins is convenient for multiple filters.
There are three simple but useful filter helpers: prop, format, file.
With them you can write like:
// output [ { name: pkg.name, file: pkg.browser, format: 'umd' } ] when(format('umd'), pluginA) // same as when(format(/^umd$/), pluginA) // same as when(format(f => f === 'umd'), pluginA) when(file(pkg.browser), pluginA) format = filter => prop('format', filter) file = filter => prop('file', filter)
# develop npm start # build npm run build # test npm test # commit changes npm run commit # publish npm publish
MIT