Commonify Save

Recursively publish ESM packages as CommonJS!

Project README

Commonify.js

For us who are still relying on CommonJS, or using Electron which does not support ESM.

🆕 See also build-electron

I made this tool that makes it easy to:

  • Pull any ESM package from npm
  • Transpile it from ESM to CommonJS using babel
  • Publish it under a custom npm scope
  • Recursively do the same for all dependencies

It is mostly an experiment, and it feels like a step back in terms of the ecosystem moving to ESM, so if anyone has any other great ideas, please submit an issue! I have thought about the possibility of doing something similar to the node_modules folder in an npm postinstall script.

Usage

First create your scope here: https://www.npmjs.com/org/create

git clone https://github.com/mifi/commonify.git
cd commonify

yarn
node cli.mjs lowdb 3.0.0 myscope

This will create the package @myscope/lowdb and its dependencies ready to publish to npm.

Example packages

I will publish commonified packages to the @commonify scope:

  • @commonify/lowdb
  • @commonify/steno
  • @commonify/execa
  • @commonify/strip-final-newline
  • @commonify/onetime
  • @commonify/mimic-fn
  • @commonify/npm-run-path
  • @commonify/path-key
  • @commonify/is-stream

Todo

  • Support already scoped packages
  • Must support dual modules (they also have "type": "module" set). Example: https://github.com/yargs/yargs-parser/blob/main/package.json
  • Automate when upstream package version updates
  • Auto-generate a list of versions and their version corresponding to upstream version
Open Source Agenda is not affiliated with "Commonify" Project. README Source: mifi/commonify
Stars
32
Open Issues
4
Last Commit
2 years ago
Repository
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating