🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

cjs-to-es6

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cjs-to-es6

Convert JavaScript files from CommonJS to ES6 modules

Source
npmnpm
Version
1.1.1
Version published
Weekly downloads
1.2K
-17.18%
Maintainers
1
Weekly downloads
 
Created
Source

cjs-to-es6

CLI to convert JavaScript files from CommonJS to ES6 modules (aka ES2015 modules, aka JavaScript modules, aka hipster require()).

This tool uses 5to6-codemod under the hood. It's basically just a thin convenience wrapper, which can process multiple files and convert both imports and exports.

Note that the process isn't foolproof, so you may have to manually tweak some things. But it can usually get you ~95% of the way there. See migrating below for some tips.

Usage

Install it:

npm install -g cjs-to-es6

Then run it:

cjs-to-es6 [ --verbose ] files/directories...

Examples:

cjs-to-es6 index.js             # convert a single file
cjs-to-es6 lib/                 # convert all files in a directory
cjs-to-es6 foo.js bar.js lib/   # convert many files/directories

All files are modified in-place.

Example input and output

In comes CommonJS:

var flimshaw = require('flimshaw');
var twentyEightSkidoo = require('twenty-eight').skidoo;

exports.flubTheDub = 'flubTheDub';
module.exports = 'zings';

Out goes ES6 modules:

import flimshaw from 'flimshaw';
import {skidoo as twentyEightSkidoo} from 'twenty-eight';

export let flubTheDub = 'flubTheDub';
export default 'zings';

Migrating from CommonJS to ES6 modules

Not all uses of CommonJS have a 1-to-1 equivalent in ES6 modules. So you might have to correct some errors manually.

Use --verbose to get detailed output, or follow these general tips:

exports must be at the top level

This is invalid:

if (clownShoes) {
  export default new Clown();
} else {
  export default new RespectableGentleman();
}

Instead do:

var result = clownShoes ? new Clown() : new RespectableGentleman();
export default result;

imports also have to be at the top level

This is invalid:

try {
  import MysteryModule from 'mystery-module';
} catch (err) {
  console.log("It's a mystery!");
}

There is no equivalent for this try/catch pattern in ES6 modules.

Keywords

es6

FAQs

Package last updated on 21 May 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts