@jdx-plugins/cli-ctom
v1.0.0
Published
Powerful CLI to convert CommonJS to ES Modules
Maintainers
Readme
🚀 CTOM — CommonJS → ESM Converter CLI
⚡ A powerful CLI tool to convert CommonJS (CJS) to ES Modules (ESM) automatically using Babel AST.
✨ Features
- 🧠 AST-based conversion (safe & accurate)
- 📦 Converts
require()→import - 🧩 Supports destructuring require
- 📤 Converts
module.exports&exports - ⚡ Ultra-fast file scanning with fast-glob
- 📁 Preserve folder structure
- 👀 Watch mode (auto convert on change)
- ⏭ Auto-skip files already using ESM
- ⚙️ Config file support
📦 Installation
Install globally
npm install -g @jdx-plugins/ctom
# run
ctomInstall locally
npm install @jdx-plugins/ctom
# run
npx ctom🚀 Usage
Convert single file
ctom app.jsConvert folder recursively
ctom "src/**/*.js" -o distWatch mode (auto convert on save)
ctom "src/**/*.js" -o dist --watchPrint result only (no output file)
ctom app.js --stdout⚙️ CLI Options
| Flag | Description |
|------|-------------|
| -o, --output | Output directory |
| -w, --watch | Watch mode |
| --stdout | Print result instead of writing file |
🧠 Supported Conversions
Default require
const fs = require("fs");➡️
import fs from "fs";Destructuring require
const { readFile } = require("fs");➡️
import { readFile } from "fs";Named exports
exports.foo = 123;➡️
export const foo = 123;Default export
module.exports = value;➡️
export default value;⏭ Auto Skip ESM
Files that already use import or export will be skipped automatically.
Example output:
⏭ Skipped (already ESM): src/app.js⚙️ Configuration
You can customize behavior with a config file.
Create:
ctom.config.jsExample:
module.exports = {
skipESM: true
};📁 Preserve Folder Structure
Input:
src/
├ utils/a.js
└ core/b.jsCommand:
ctom "src/**/*.js" -o distOutput:
dist/
├ utils/a.mjs
└ core/b.mjs🛠️ Built With
- Babel Parser (AST)
- Fast-Glob
- Commander CLI
- Chokidar
🧩 Why CTOM?
Unlike regex-based converters, CTOM uses AST parsing which means:
✅ Accurate conversion
✅ Safe for complex code
✅ No false matches
✅ Production-ready reliability
📜 License
Apache 2.0 License
⭐ Support
If you find this project useful:
⭐ Star the repo
🐛 Report issues
🚀 Contribute improvements
🔥 Future Roadmap
- Parallel processing mode
- Interactive CLI wizard
- Plugin system
- TypeScript support
CTOM — Making CJS → ESM migration effortless ⚡
