UNPKG

update-file-content

Version:

A simple utility for executing RegEx replacement on files, powered by stream.

61 lines (51 loc) 1.9 kB
import assert from "assert"; // pack.mjs suite("ES6 Module to CommonJS style", () => { suite("import default", () => { const pattern = /import\s+([^{}]+?)\s+from\s*['"](.+?)['"];?/; const replacement = "const $1 = require(\"$2\");"; test("the simplest", () => { assert.strictEqual( "const fs = require(\"fs\");", "import fs from 'fs';".replace(pattern, replacement) ); }) }) suite("import destructuring", () => { const pattern = /import\s+\{\s*(.+?)\s*\}\s+from\s*['"](.+?)['"];?/; const replacement = "const $1 = require(\"$2\").$1;"; test("a single property", () => { assert.strictEqual( "const PassThrough = require(\"stream\").PassThrough;", "import { PassThrough } from \"stream\"".replace(pattern, replacement) ); }); /** * below features are not implemented yet */ test("with renaming", () => { assert.strictEqual( "const Clone = require(\"stream\").PassThrough;", "import { PassThrough as Clone } from \"stream\"".replace(pattern, replacement) ); }); test("with property renaming and default naming", () => { assert.strictEqual( "const fs = require(\"fs\");\nconst fsp = fs.promises;", "import { promises as fsp }, fs from \"fs\"".replace(pattern, replacement) ); }); test("multiple properties", () => { assert.strictEqual( "const path = require(\"path\");\nconst join = path.join;\nconst dirname = path.dirname;", "import { join, dirname } from \"path\";".replace(pattern, replacement) ); }); test("with path", () => { assert.strictEqual( "const fsp = require(\"fs\").promises", "import fsp from 'fs/promises';".replace(pattern, replacement) ); }); }) })