Rollup config to create npm modules that support both ECMAScript module and CommonJS
npm install --save-dev rollup-config-module
- Include
rollup --config=node:moduleto the build part of your module's npm scripts.
"scripts": {
"build": "rollup --config=node:module",
"pretest": "npm run-script build"
}- Write your module using ECMAScript
import/exportinstead ofrequire/module.exports, and save it asindex.mjs. - Add
modulefield topackage.jsonand let it point toindex.mjs.
"module": "index.mjs"- Run the build script and you'll see
index.jsis created. - Include both
index.mjsandindex.jsto 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.
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.');
}
}ISC License © 2018 Shinnosuke Watanabe