Skip to content

Rollup config to create an npm package that supports both ECMAScript module and CommonJS

License

Notifications You must be signed in to change notification settings

shinnn/rollup-config-module

Repository files navigation

rollup-config-module

npm version Build Status Coverage Status

Rollup config to create npm modules that support both ECMAScript module and CommonJS

Installation

Use npm.

npm install --save-dev rollup-config-module

Usage

For module authors

  1. Include rollup --config=node:module to the build part of your module's npm scripts.
"scripts": {
  "build": "rollup --config=node:module",
  "pretest": "npm run-script build"
}
  1. Write your module using ECMAScript import / export instead of require / module.exports, and save it as index.mjs.
  2. Add module field to package.json and let it point to index.mjs.
"module": "index.mjs"
  1. Run the build script and you'll see index.js is created.
  2. Include both index.mjs and index.js to the published npm package.
"files": [
  "index.js",
  "index.mjs"
]

A real world example would help understanding how to create a package with rollup-config-module.

For module users

Modules built with this configuration can be used in both ES2015+ projects and traditional require-based projects.

Users can load index.mjs with a build tool that supports module field, for example rollup-plugin-node-resolve and Webpack.

import fn from 'awesome-npm-package';

Users can also load index.js via Node's built-in require,

const fn = require('awesome-npm-package');

because index.js has been compiled from index.mjs with all import and export replaced with require and module.exports.

import {inspect} from 'util';
import isNaturalNumber from 'is-natural-number';

export default function(v) {
  if (!isNaturalNumber(v)) {
    console.log(inspect(v) + 'is not a natural number.');
  }
}

'use strict';

var util = require('util');
var isNaturalNumber = require('is-natural-number');

module.exports = function(v) {
  if (!isNaturalNumber(v)) {
    console.log(util.inspect(v) + 'is not a natural number.');
  }
}

License

ISC License © 2018 Shinnosuke Watanabe

About

Rollup config to create an npm package that supports both ECMAScript module and CommonJS

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published