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:module
to 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
/export
instead ofrequire
/module.exports
, and save it asindex.mjs
. Add
module
field topackage.json
and let it point toindex.mjs
."module": "index.mjs"
- Run the build script and you'll see
index.js
is created. Include both
index.mjs
andindex.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