Package detail

rollup-plugin-node-resolve

rollup1.4mMITdeprecated5.2.0

This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve.

Bundle third-party dependencies in node_modules

rollup, rollup-plugin, es2015, npm

readme

rollup-plugin-node-resolve

This plugin used to be called rollup-plugin-npm

Locate modules using the Node resolution algorithm, for using third party modules in node_modules

Installation

npm install --save-dev rollup-plugin-node-resolve

Usage

// rollup.config.js
import resolve from 'rollup-plugin-node-resolve';

export default {
  input: 'main.js',
  output: {
    file: 'bundle.js',
    format: 'iife',
    name: 'MyModule'
  },
  plugins: [
    resolve({

      // the fields to scan in a package.json to determine the entry point
      // if this list contains "browser", overrides specified in "pkg.browser"
      // will be used
      mainFields: ['module', 'main'], // Default: ['module', 'main']

      // DEPRECATED: use "mainFields" instead
      // use "module" field for ES6 module if possible
      module: true, // Default: true

      // DEPRECATED: use "mainFields" instead
      // use "jsnext:main" if possible
      // legacy field pointing to ES6 module in third-party libraries,
      // deprecated in favor of "pkg.module":
      // - see: https://github.com/rollup/rollup/wiki/pkg.module
      jsnext: true,  // Default: false

      // DEPRECATED: use "mainFields" instead
      // use "main" field or index.js, even if it's not an ES6 module
      // (needs to be converted from CommonJS to ES6)
      // – see https://github.com/rollup/rollup-plugin-commonjs
      main: true,  // Default: true

      // some package.json files have a "browser" field which specifies
      // alternative files to load for people bundling for the browser. If
      // that's you, either use this option or add "browser" to the
      // "mainfields" option, otherwise pkg.browser will be ignored
      browser: true,  // Default: false

      // not all files you want to resolve are .js files
      extensions: [ '.mjs', '.js', '.jsx', '.json' ],  // Default: [ '.mjs', '.js', '.json', '.node' ]

      // whether to prefer built-in modules (e.g. `fs`, `path`) or
      // local ones with the same names
      preferBuiltins: false,  // Default: true

      // Lock the module search in this path (like a chroot). Module defined
      // outside this path will be marked as external
      jail: '/my/jail/path', // Default: '/'

      // Set to an array of strings and/or regexps to lock the module search
      // to modules that match at least one entry. Modules not matching any
      // entry will be marked as external
      only: [ 'some_module', /^@some_scope\/.*$/ ], // Default: null

      // If true, inspect resolved files to check that they are
      // ES2015 modules
      modulesOnly: true, // Default: false

      // Force resolving for these modules to root's node_modules that helps
      // to prevent bundling the same package multiple times if package is
      // imported from dependencies.
      dedupe: [ 'react', 'react-dom' ], // Default: []

      // Any additional options that should be passed through
      // to node-resolve
      customResolveOptions: {
        moduleDirectory: 'js_modules'
      }
    })
  ]
};

Using with rollup-plugin-commonjs

Since most packages in your node_modules folder are probably legacy CommonJS rather than JavaScript modules, you may need to use rollup-plugin-commonjs:

// rollup.config.js
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';

export default {
  input: 'main.js',
  output: {
    file: 'bundle.js',
    format: 'iife'
  },
  name: 'MyModule',
  plugins: [
    resolve(),
    commonjs()
  ]
};

Resolving Built-Ins (like fs)

This plugin won't resolve any builtins (e.g. fs). If you need to resolve builtins you can install local modules and set preferBuiltins to false, or install a plugin like rollup-plugin-node-builtins which provides stubbed versions of these methods.

If you want to silence warnings about builtins, you can add the list of builtins to the externals option; like so:

import resolve from 'rollup-plugin-node-resolve';
import builtins from 'builtin-modules'
export default ({
  input: ...,
  plugins: [resolve()],
  externals: builtins,
  output: ...
})

License

MIT

changelog

rollup-plugin-node-resolve changelog

5.2.0 (2019-06-29)

  • dedupe accepts a function (#225 by @manucorporat)

5.1.1 (2019-06-29)

  • Move Rollup version check to buildStart hook to avoid issues (#232 by @lukastaegert)

5.1.0 (2019-06-22)

  • Fix path fragment inputs (#229 by @bterlson)

5.0.4 (2019-06-22)

  • Treat sideEffects array as inclusion list (#227 by @mikeharder)

5.0.3 (2019-06-16)

  • Make empty.js a virtual module (#224 by @manucorporat)

5.0.2 (2019-06-13)

  • Support resolve 1.11.1, add built-in test (#223 by @bterlson)

5.0.1 (2019-05-31)

  • Update to resolve@1.11.0 for better performance (#220 by @keithamus)

5.0.0 (2019-05-15)

  • Replace bublé with babel, update dependencies (#216 by @mecurc)
  • Handle module side-effects (#219 by @lukastaegert)

Breaking Changes

  • Requires at least rollup@1.11.0 to work (v1.12.0 for module side-effects to be respected)
  • If used with rollup-plugin-commonjs, it should be at least v10.0.0

4.2.4 (2019-05-11)

  • Add note on builtins to Readme (#215 by @keithamus)
  • Add issue templates (#217 by @mecurc)
  • Improve performance by caching isDir (#218 by @keithamus)

4.2.3 (2019-04-11)

  • Fix ordering of jsnext:main when using the jsnext option (#209 by @lukastaegert)

4.2.2 (2019-04-10)

  • Fix TypeScript typings (rename and export Options interface) (#206 by @Kocal)
  • Fix mainfields typing (#207 by @nicolashenry)

4.2.1 (2019-04-06)

  • Respect setting the deprecated fields "module", "main", and "jsnext" (#204 by @nick-woodward)

4.2.0 (2019-04-06)

  • Add new mainfields option (#182 by @keithamus)
  • Added dedupe option to prevent bundling the same package multiple times (#201 by @sormy)

4.1.0 (2019-04-05)

  • Add TypeScript typings (#189 by @NotWoods)
  • Update dependencies (#202 by @lukastaegert)

4.0.1 (2019-02-22)

  • Fix issue when external modules are specified in package.browser (#143 by @keithamus)
  • Fix package.browser mapping issue when false is specified (#183 by @allex)

4.0.0 (2018-12-09)

This release will support rollup@1.0

Features

  • Resolve modules used to define manual chunks (#185 by @mcshaman)
  • Update dependencies and plugin hook usage (#187 by @lukastaegert)

3.4.0 (2018-09-04)

This release now supports .mjs files by default

Features

3.3.0 (2018-03-17)

This release adds the only option

New Features

  • feat: add only option (#83; @arantes555)

Docs

  • docs: correct description of jail option (#120; @GeorgeTaveras1231)

3.2.0 (2018-03-07)

This release caches reading/statting of files, to improve speed.

Performance Improvements

  • perf: cache file stats/reads (#126; @keithamus)

3.0.4 (unreleased)

  • Update lockfile #137
  • Update rollup dependency #138
  • Enable installation from Github #142

3.0.3

3.0.2

  • Ensure pkg.browser is an object if necessary (#129)

3.0.1

  • Remove browser-resolve dependency (#127)

3.0.0

  • [BREAKING] Remove options.skip (#90)
  • Add modulesOnly option (#96)

2.1.1

  • Prevent jail from breaking builds on Windows (#93)

2.1.0

  • Add jail option (#53)
  • Add customResolveOptions option (#79)
  • Support symlinked packages (#82)

2.0.0

  • Add support module field in package.json as an official alternative to jsnext

1.7.3

  • Error messages are more descriptive (#50)

1.7.2

  • Allow entry point paths beginning with ./

1.7.1

  • Return a name

1.7.0

  • Allow relative IDs to be external (#32)

1.6.0

  • Skip IDs containing null character

1.5.0

  • Prefer built-in options, but allow opting out (#28)

1.4.0

  • Pass options.extensions through to node-resolve

1.3.0

  • skip: true skips all packages that don't satisfy the main or jsnext options (#16)

1.2.1

  • Support scoped packages in skip option (#15)

1.2.0

  • Support browser field (#8)
  • Get tests to pass on Windows

1.1.0

  • Use node-resolve to handle various corner cases

1.0.0

  • Add ES6 build, use Rollup 0.20.0

0.1.0

  • First release