{"id":22144,"library":"rollup-plugin-node-builtins-brofs","title":"rollup-plugin-node-builtins","description":"A Rollup plugin that provides browser shims for Node.js built-in modules (fs, crypto, path, events, stream, etc.) to enable code designed for Node.js or Browserify to run in the browser. Version 2.1.3 is the current release, with sporadic maintenance. Its key differentiator is shimming a wide range of builtins (30+), some with ESM named exports, but many are partial mocks or circular-referenced (streams, http) preventing tree-shaking. Requires rollup-plugin-node-globals for some modules. Includes security fixes for RCE and memory exposure in browserify-fs fork.","status":"maintenance","version":"2.1.3","language":"javascript","source_language":"en","source_url":"https://github.com/anwarhahjjeffersongeorge/rollup-plugin-node-builtins","tags":["javascript","rollup-plugin"],"install":[{"cmd":"npm install rollup-plugin-node-builtins-brofs","lang":"bash","label":"npm"},{"cmd":"yarn add rollup-plugin-node-builtins-brofs","lang":"bash","label":"yarn"},{"cmd":"pnpm add rollup-plugin-node-builtins-brofs","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for modules like process, events, stream, buffer, url, etc.","package":"rollup-plugin-node-globals","optional":true}],"imports":[{"note":"Rollup plugins are ESM-only; CommonJS require works in Rollup config but not in bundling context.","wrong":"const builtins = require('rollup-plugin-node-builtins')","symbol":"default","correct":"import builtins from 'rollup-plugin-node-builtins'"},{"note":"Named export works for ES6 compatible modules; default export also available.","wrong":"const EventEmitter = require('events').EventEmitter","symbol":"EventEmitter","correct":"import EventEmitter from 'events'"},{"note":"Named import from 'util' works when ES6 module is used; commonjs pattern incorrect for ESM treeshaking.","wrong":"import util from 'util'; util.inherits","symbol":"inherits","correct":"import { inherits } from 'util'"}],"quickstart":{"code":"// rollup.config.js\nimport builtins from 'rollup-plugin-node-builtins';\nimport globals from 'rollup-plugin-node-globals';\n\nexport default {\n  input: 'main.js',\n  output: {\n    file: 'bundle.js',\n    format: 'iife'\n  },\n  plugins: [\n    globals(),\n    builtins()\n  ]\n};","lang":"javascript","description":"Shows basic Rollup configuration using the plugin with optional globals plugin for modules like process and stream."},"warnings":[{"fix":"Add rollup-plugin-node-globals to plugins list before builtins.","message":"Requires rollup-plugin-node-globals for many modules","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use named imports sparingly and avoid importing these modules unnecessarily.","message":"stream, http, https have circular dependencies and cannot be tree-shaken","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Update to v2.1.0+ which uses bro-fs.","message":"Original browserify-fs had security vulnerabilities (CVE-2016-10697, CVE-2017-16116), replaced by bro-fs","severity":"deprecated","affected_versions":"<2.1.0"},{"fix":"Avoid using crypto; pass {crypto: true} if needed, but expect limited functionality.","message":"crypto module is not properly shimmed; requires passing {crypto: true} option and may not work","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Do not rely on dns, dgram, child_process, cluster, module, net, readline, repl, tls for real behavior.","message":"Modules marked with ∆ return mocks (no real functionality)","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Install rollup-plugin-node-globals and add it to plugin list before builtins.","cause":"Missing rollup-plugin-node-globals","error":"Error: Module 'process' has been externalized for browser compatibility"},{"fix":"Add rollup-plugin-node-globals plugin.","cause":"Missing global shim (from node-globals)","error":"Uncaught ReferenceError: global is not defined"},{"fix":"Pass {crypto: true} option to builtins() or provide a custom shim.","cause":"Rollup treats crypto as external; builtins plugin does not shim it by default","error":"Module 'crypto' is not bundled: module not found"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}