{"id":21945,"library":"rollup-plugin-by-output","title":"rollup-plugin-by-output","description":"A Rollup plugin (or plugin helper) that allows applying Rollup plugins conditionally based on output options (format, file, etc.). Version 1.0.1 is the latest stable release. It helps reduce duplicate config when Rollup has multiple outputs that need different plugins (e.g., minification only for UMD builds). Key differentiator: provides elegant helpers like `when`, `whenAll`, `prop`, `format`, and `file` to filter plugins per output. Unlike manual array configs, it keeps code DRY. Requires Node >=8.3.0.","status":"active","version":"1.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/wmzy/rollup-plugin-by-output","tags":["javascript","rollup","plugin","output","filter"],"install":[{"cmd":"npm install rollup-plugin-by-output","lang":"bash","label":"npm"},{"cmd":"yarn add rollup-plugin-by-output","lang":"bash","label":"yarn"},{"cmd":"pnpm add rollup-plugin-by-output","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency - operates as a Rollup plugin","package":"rollup","optional":false}],"imports":[{"note":"ESM default import; CJS require works but not recommended for Rollup configs","wrong":"const plugins = require('rollup-plugin-by-output')","symbol":"plugins","correct":"import plugins from 'rollup-plugin-by-output'"},{"note":"Named export; also available via CJS destructuring","wrong":"const { when } = require('rollup-plugin-by-output')","symbol":"when","correct":"import { when } from 'rollup-plugin-by-output'"},{"note":"Named export; commonly used to filter by output file path","wrong":null,"symbol":"file","correct":"import { file } from 'rollup-plugin-by-output'"},{"note":"Named export; commonly used to filter by output format (e.g., 'umd', 'cjs')","wrong":null,"symbol":"format","correct":"import { format } from 'rollup-plugin-by-output'"}],"quickstart":{"code":"import babel from 'rollup-plugin-babel';\nimport terser from 'rollup-plugin-terser';\nimport plugins, { file } from 'rollup-plugin-by-output';\n\nexport default {\n  input: 'src/index.js',\n  output: [\n    { file: 'dist/bundle.js', format: 'cjs' },\n    { file: 'dist/bundle.min.js', format: 'cjs' },\n  ],\n  plugins: plugins(\n    babel(),\n    [file('dist/bundle.min.js'), terser()]\n  )\n};","lang":"javascript","description":"Applies babel to all outputs and terser only to the minified output."},"warnings":[{"fix":"Use when(file.name => name.endsWith('.min.js'), plugin) or prop('file', f => f.endsWith('.min.js'))","message":"The 'file' helper compares exact string equality, not a suffix. To match by file extension, use a custom function.","severity":"gotcha","affected_versions":"all"},{"fix":"Be explicit: import plugins, { when } from 'rollup-plugin-by-output'","message":"The package exports using default export for 'plugins' but named exports for helpers – mixing can cause confusion.","severity":"deprecated","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Call plugins() with arguments: plugins(pluginA, [filter, pluginB]). Do not wrap in array brackets.","cause":"Using default import as an array or passing incorrect arguments to 'plugins'.","error":"TypeError: plugins is not a function"},{"fix":"Ensure your bundler supports ESM or use import { when } from 'rollup-plugin-by-output' with ES modules; in CJS, use const { when } = require('rollup-plugin-by-output').","cause":"Importing 'when' incorrectly (e.g., import { when } from 'rollup-plugin-by-output' but package doesn't export it as named in CJS).","error":"when is not a function"},{"fix":"Run npm install --save-dev rollup-plugin-by-output","cause":"Package not installed or missing in node_modules.","error":"Module not found: Error: Can't resolve 'rollup-plugin-by-output'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}