• This repository has been archived on 05/Aug/2021
  • Stars
    star
    469
  • Rank 93,595 (Top 2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 9 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This module has moved and is now available at @rollup/plugin-node-resolve / https://github.com/rollup/plugins/blob/master/packages/node-resolve

Moved

This module has moved and is now available at @rollup/plugin-node-resolve. Please update your dependencies. This repository is no longer maintained.

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()],
  external: builtins,
  output: ...
})

Additional Plugin APIs

In addition to the standard hooks used by Rollup, this plugin exposes additional functionality useful for other plugins.

getPackageInfoForId (moduleId: string) => PackageInfo

Returns an object with metadata about the package containing the specified module. PackageInfo has the following fields:

  • packageJson: The package.json file for the package
  • packageJsonPath: The path to the package.json file
  • root: The root directory of the package
  • resolvedMainField: Which main field was used during resolution (see the mainFields option)
  • browserMappedMain: Whether the browser map was used to resolve the module's entry point
  • resolvedEntrypoint: The resolved entry point to the module with respect to the mainFields configuration and browser mappings.

This object is populated during the resolve hook, so plugins should only depend on this information being present in hooks that run after resolve.

Usage from Other Plugins

getPackageInfoForId is exposed as a method on the plugin object along side the other hooks expected of a Rollup plugin.

import resolve from 'rollup-plugin-node-resolve';
const resolve = resolve();

export default ({
  input: ...,
  plugins: [
    resolve(),
    // custom plugin
    {
      transform(code, id) {
        // get package info for this module id
        const info = resolve.getPackageInfoForId(id);

        // if it's the buffer shim, return nothing.
        if (info.packageJson.name === 'buffer') {
          return '';
        }

        return code;
      }
    }
  ],
  output: ...
})

If you're writing a standalone plugin, you can get access to the plugin object by pulling it out of the config provided to the buildStart hook:

export default function {
  let nodeResolvePlugin;

  function getPackageInfoForId(id) {
    // user config isn't using this plugin
    if (!nodeResolvePlugin) return;

    // user config has an older version without this API
    if (!nodeResolvePlugin.getPackageInfoForId) return;

    return nodeResolvePlugin.getPackageInfoForId(id);
  }

  return {
    buildStart (options) {
      nodeResolvePlugin = options.plugins && options.plugins.filter(p => p.name === 'node-resolve')[0];
    },
    transform (code, id) {
      const info = getPackageInfoForId(id);
      // ...
    }
  }
}

License

MIT

More Repositories

1

rollup

Next-generation ES module bundler
JavaScript
25,314
star
2

plugins

๐Ÿฃ The one-stop shop for official Rollup plugins
JavaScript
3,626
star
3

awesome

โšก๏ธ Delightful Rollup Plugins, Packages, and Resources
2,549
star
4

rollup-starter-lib

Bare-bones example of how to create a library using Rollup
JavaScript
966
star
5

rollup-plugin-babel

This package has moved and is now available at @rollup/plugin-babel / https://github.com/rollup/plugins/tree/master/packages/babel
JavaScript
702
star
6

rollup-plugin-commonjs

This module has moved and is now available at @rollup/plugin-commonjs / https://github.com/rollup/plugins/blob/master/packages/commonjs
JavaScript
501
star
7

rollup-starter-app

Bare-bones example of how to create an application using Rollup
JavaScript
424
star
8

rollup-starter-project

Sample project for packages built using rollup.
JavaScript
325
star
9

rollup-plugin-typescript

This module has moved and is now available at @rollup/plugin-typescript / https://github.com/rollup/plugins/blob/master/packages/typescript
JavaScript
324
star
10

rollup-starter-code-splitting

Starter project with code-splitting and dynamic imports, for modern and legacy browsers
JavaScript
248
star
11

rollup-plugin-alias

This module has moved and is now available at @rollup/plugin-alias / https://github.com/rollup/plugins/tree/master/packages/alias
JavaScript
172
star
12

rollup-plugin-multi-entry

This module has moved and is now available at @rollup/plugin-multi-entry / https://github.com/rollup/plugins/blob/master/packages/multi-entry
JavaScript
171
star
13

rollup-plugin-replace

This module has moved and is now available at @rollup/plugin-replace / https://github.com/rollup/plugins/blob/master/packages/replace
JavaScript
162
star
14

rollup-plugin-json

This module has moved and is now available at @rollup/plugin-json / https://github.com/rollup/plugins/blob/master/packages/json
JavaScript
126
star
15

rollup-watch

Fast incremental rebuilds with Rollup CLI
JavaScript
91
star
16

three-jsnext

three.js, but futuristic
JavaScript
85
star
17

rollupjs.org

Rollup demo website
Svelte
77
star
18

rollup-plugin-inject

This module has moved and is now available at @rollup/plugin-inject / https://github.com/rollup/plugins/blob/master/packages/inject
JavaScript
77
star
19

rollup-plugin-wasm

This module has moved and is now available at @rollup/plugin-wasm / https://github.com/rollup/plugins/blob/master/packages/wasm
WebAssembly
75
star
20

rollup-plugin-url

This module has moved and is now available at @rollup/plugin-url / https://github.com/rollup/plugins/blob/master/packages/url
JavaScript
75
star
21

rollup-docs-cn

Rollup.js ไธญๆ–‡ๆ–‡ๆกฃ - Built with Vitepress
JavaScript
74
star
22

rollup-plugin-run

This module has moved and is now available at @rollup/plugin-run / https://github.com/rollup/plugins/blob/master/packages/run
JavaScript
64
star
23

rollup-plugin-strip

This module has moved and is now available at @rollup/plugin-strip / https://github.com/rollup/plugins/blob/master/packages/strip
JavaScript
50
star
24

babel-preset-es2015-rollup

babel-preset-es2015, minus modules, plus helpers
JavaScript
48
star
25

rollup-pluginutils

This package has moved and is now available at @rollup/pluginutils / https://github.com/rollup/plugins
TypeScript
45
star
26

rollup-plugin-buble

This module has moved and is now available at @rollup/plugin-buble / https://github.com/rollup/plugins/blob/master/packages/buble
JavaScript
43
star
27

rollup-plugin-image

This module has moved and is now available at @rollup/plugin-image / https://github.com/rollup/plugins/blob/master/packages/image
JavaScript
41
star
28

plugin-auto-install

This module has moved and is now available at @rollup/plugin-auto-install / https://github.com/rollup/plugins/blob/master/packages/auto-install
JavaScript
41
star
29

rollup-plugin-virtual

This module has moved and is now available at @rollup/plugin-virtual / https://github.com/rollup/plugins/blob/master/packages/virtual
JavaScript
41
star
30

d3-jsnext

d3, but futuristic
JavaScript
33
star
31

rollup-babel

[DEPRECATED] Experimental rollup/babel integration
JavaScript
28
star
32

rollup-plugin-sucrase

This package has moved and is now available at @rollup/plugin-sucrase / https://github.com/rollup/plugins/blob/master/packages/sucrase
JavaScript
23
star
33

stream

๐Ÿฃ Stream Rollup build results
TypeScript
22
star
34

rollup-plugin-butternut

This module is no longer maintained. Please use https://www.npmjs.com/package/rollup-plugin-terser
JavaScript
20
star
35

rollup-plugin-ractive

Precompile Ractive components
JavaScript
11
star
36

rollup-plugin-yaml

This module has moved and is now available at @rollup/plugin-yaml / https://github.com/rollup/plugins/blob/master/packages/yaml
JavaScript
11
star
37

rollup-plugin-legacy

Add export statements to plain scripts. Moved to https://github.com/rollup/plugins/blob/master/packages/legacy
JavaScript
10
star
38

eslint-config-rollup

A shareable ESLint configuration for Rollup projects
JavaScript
9
star
39

rollup-init

Initialise Rollup configuration
JavaScript
7
star
40

rollup-plugin-dsv

This module has moved and is now available at @rollup/plugin-dsv / https://github.com/rollup/plugins/blob/master/packages/dsv
JavaScript
5
star
41

rollup-starter-plugin

Starter code for creating a Rollup plugin
JavaScript
5
star
42

containers

๐Ÿ“ค
Dockerfile
4
star
43

log

๐ŸŒณ
TypeScript
3
star
44

hull

๐Ÿ›ณ
JavaScript
2
star
45

org

Organizational issues and tasks for Rollup
1
star
46

rollup-docs-az

Rollup docs in Azerbaijani
JavaScript
1
star