From a8d1f86b5ebc5ee322f082c900f5085fb1d3ebee Mon Sep 17 00:00:00 2001 From: Jannik <72194488+JannikGM@users.noreply.github.com> Date: Fri, 23 Jun 2023 19:09:22 +0200 Subject: [PATCH 1/2] feat: dev mode --- packages/vite-plugin-commonjs/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/vite-plugin-commonjs/package.json b/packages/vite-plugin-commonjs/package.json index f1815c7..7d2f060 100644 --- a/packages/vite-plugin-commonjs/package.json +++ b/packages/vite-plugin-commonjs/package.json @@ -3,7 +3,8 @@ "version": "1.0.3", "description": "A vite plugin that support commonjs to esm in vite", "scripts": { - "build": "tsc -p tsconfig.json" + "build": "tsc -p tsconfig.json", + "dev": "tsc -p tsconfig.json --watch" }, "main": "lib/index.js", "files": [ From 2a554123c634d9c79ee209eb7efa45352b845181 Mon Sep 17 00:00:00 2001 From: Jannik <72194488+JannikGM@users.noreply.github.com> Date: Fri, 23 Jun 2023 19:10:04 +0200 Subject: [PATCH 2/2] feat: source-map using MagicString --- packages/vite-plugin-commonjs/package.json | 3 +- packages/vite-plugin-commonjs/src/index.ts | 19 +++++----- packages/vite-plugin-commonjs/src/lib.ts | 40 ++++++++-------------- 3 files changed, 28 insertions(+), 34 deletions(-) diff --git a/packages/vite-plugin-commonjs/package.json b/packages/vite-plugin-commonjs/package.json index 7d2f060..5709417 100644 --- a/packages/vite-plugin-commonjs/package.json +++ b/packages/vite-plugin-commonjs/package.json @@ -25,7 +25,8 @@ }, "homepage": "https://github.com/originjs/vite-plugins/tree/main/packages/vite-plugin-commonjs", "dependencies": { - "esbuild": "^0.14.14" + "esbuild": "^0.14.14", + "magic-string": "^0.30.0" }, "devDependencies": { "@types/node": "^15.12.2", diff --git a/packages/vite-plugin-commonjs/src/index.ts b/packages/vite-plugin-commonjs/src/index.ts index 0fba8e9..6e7b6f2 100644 --- a/packages/vite-plugin-commonjs/src/index.ts +++ b/packages/vite-plugin-commonjs/src/index.ts @@ -3,6 +3,7 @@ import { transformRequire, isCommonJS } from "./lib"; import * as fs from "fs"; import { Plugin } from "vite"; import createFilter from "./filter"; +import MagicString from 'magic-string'; export type Options = { include?: string | string[] | undefined; @@ -25,16 +26,17 @@ export function viteCommonjs( return null; } - let result = transformRequire(code, id); + const ms = new MagicString(code); + const replaced = transformRequire(ms, id); if (id.indexOf("/node_modules/.vite/") == -1 && isCommonJS(code)) { - return transformSync(result.code, { format: "esm" }); + return transformSync(ms.toString(), { format: "esm" }); } - if (result.replaced) { + if (replaced) { return { - code: result.code, - map: null, + code: ms.toString(), + map: ms.generateMap().toString(), warnings: null, }; } @@ -54,10 +56,11 @@ export function esbuildCommonjs(include: string[] = []) { }, async ({ path: id }) => { const code = fs.readFileSync(id).toString(); - let result = transformRequire(code, id); - if (result.replaced) { + const ms = new MagicString(code); + const replaced = transformRequire(ms, id); + if (replaced) { return { - contents: result.code, + contents: ms.toString(), loader: "js", }; } diff --git a/packages/vite-plugin-commonjs/src/lib.ts b/packages/vite-plugin-commonjs/src/lib.ts index b7681f1..75393b6 100644 --- a/packages/vite-plugin-commonjs/src/lib.ts +++ b/packages/vite-plugin-commonjs/src/lib.ts @@ -1,29 +1,23 @@ +import MagicString from 'magic-string'; + const commonJSRegex: RegExp = /\b(module\.exports|exports\.\w+|exports\s*=\s*|exports\s*\[.*\]\s*=\s*)/; const requireRegex: RegExp = /(?