rollup-config-module
Rollup config to create npm modules that support both ECMAScript module and CommonJS
Installation
npm install --save-dev rollup-config-module
Usage
For module authors
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.
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