From 67fb7b4d1b0b1a4597d8d2abca1b86aec44bc306 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Tue, 15 Mar 2022 09:56:09 +0800 Subject: [PATCH 1/4] Revert "Reduce bundled size of `diff` package (#12160)" This reverts commit 7d7f7e928a65a14ff27aa9790130c74edfc9b2d1. --- src/cli/format.js | 15 +++------------ src/main/core.js | 5 ++--- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/cli/format.js b/src/cli/format.js index ce3a1063f8f8..bfff5e2cda41 100644 --- a/src/cli/format.js +++ b/src/cli/format.js @@ -17,18 +17,9 @@ const getOptionsForFile = require("./options/get-options-for-file.js"); const isTTY = require("./is-tty.js"); function diff(a, b) { - // Use `diff/lib/patch/create.js` instead of `diff` to reduce bundle size - return require("diff/lib/patch/create.js").createTwoFilesPatch( - "", - "", - a, - b, - "", - "", - { - context: 2, - } - ); + return require("diff").createTwoFilesPatch("", "", a, b, "", "", { + context: 2, + }); } function handleError(context, filename, error, printedFilename) { diff --git a/src/main/core.js b/src/main/core.js index 07e40624f856..63c40594a9b9 100644 --- a/src/main/core.js +++ b/src/main/core.js @@ -1,7 +1,6 @@ "use strict"; -// Use `diff/lib/diff/array.js` instead of `diff` to reduce bundle size -const { diffArrays } = require("diff/lib/diff/array.js"); +const diff = require("diff"); const { printer: { printDocToString }, @@ -119,7 +118,7 @@ function coreFormat(originalText, opts, addAlignmentSize = 0) { const newCursorNodeCharArray = [...newCursorNodeText]; - const cursorNodeDiff = diffArrays( + const cursorNodeDiff = diff.diffArrays( oldCursorNodeCharArray, newCursorNodeCharArray ); From 81e8a3142acaf1817d8280f111c55f376711b4aa Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Tue, 15 Mar 2022 10:01:47 +0800 Subject: [PATCH 2/4] Replace module --- scripts/build/config.mjs | 21 +++++++++++++++++++++ src/main/core.js | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/scripts/build/config.mjs b/scripts/build/config.mjs index 5d9aea8a7d53..1f27a270f44b 100644 --- a/scripts/build/config.mjs +++ b/scripts/build/config.mjs @@ -23,6 +23,20 @@ const { require } = createEsmUtils(import.meta); * @property {string[]} ignore - paths of CJS modules to ignore */ +/* +`diff` use deprecated folder mapping "./" in the "exports" field, +so we can't `require("diff/lib/diff/array.js")` directory. +To reduce the bundle size + +We can switch to deep require once https://github.com/kpdecker/jsdiff/pull/351 get merged +*/ +const replaceDiffPackageEntry = (file) => ({ + [require.resolve("diff")]: path.join( + path.dirname(require.resolve("diff/package.json")), + file + ), +}); + /** @type {Bundle[]} */ const parsers = [ { @@ -229,6 +243,9 @@ const coreBundles = [ replacement: "const utilInspect = require('util').inspect", }, ], + replaceModule: { + ...replaceDiffPackageEntry("lib/diff/array.js"), + }, }, { input: "src/document/index.js", @@ -248,6 +265,7 @@ const coreBundles = [ ), [createRequire(require.resolve("vnopts")).resolve("chalk")]: require.resolve("./shims/chalk.cjs"), + ...replaceDiffPackageEntry("lib/diff/array.js"), }, }, { @@ -260,6 +278,9 @@ const coreBundles = [ input: "src/cli/index.js", output: "cli.js", external: ["benchmark"], + replaceModule: { + ...replaceDiffPackageEntry("lib/patch/create.js"), + }, }, { input: "src/common/third-party.js", diff --git a/src/main/core.js b/src/main/core.js index 63c40594a9b9..133128469d9b 100644 --- a/src/main/core.js +++ b/src/main/core.js @@ -1,6 +1,6 @@ "use strict"; -const diff = require("diff"); +const { diffArrays } = require("diff"); const { printer: { printDocToString }, @@ -118,7 +118,7 @@ function coreFormat(originalText, opts, addAlignmentSize = 0) { const newCursorNodeCharArray = [...newCursorNodeText]; - const cursorNodeDiff = diff.diffArrays( + const cursorNodeDiff = diffArrays( oldCursorNodeCharArray, newCursorNodeCharArray ); From c1f6b22a973bbbf61d302f7d7c1cd5a669c5c8c8 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Tue, 15 Mar 2022 12:13:07 +0800 Subject: [PATCH 3/4] Update scripts/build/config.mjs Co-authored-by: Sosuke Suzuki --- scripts/build/config.mjs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/build/config.mjs b/scripts/build/config.mjs index 1f27a270f44b..9149e5274d0c 100644 --- a/scripts/build/config.mjs +++ b/scripts/build/config.mjs @@ -243,9 +243,7 @@ const coreBundles = [ replacement: "const utilInspect = require('util').inspect", }, ], - replaceModule: { - ...replaceDiffPackageEntry("lib/diff/array.js"), - }, + replaceModule: replaceDiffPackageEntry("lib/diff/array.js"), }, { input: "src/document/index.js", From ffbaff508e59da56547d728c9f45d9e12077ed9d Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Tue, 15 Mar 2022 12:15:44 +0800 Subject: [PATCH 4/4] Update config.mjs --- scripts/build/config.mjs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/build/config.mjs b/scripts/build/config.mjs index 9149e5274d0c..87638ba243c6 100644 --- a/scripts/build/config.mjs +++ b/scripts/build/config.mjs @@ -276,9 +276,7 @@ const coreBundles = [ input: "src/cli/index.js", output: "cli.js", external: ["benchmark"], - replaceModule: { - ...replaceDiffPackageEntry("lib/patch/create.js"), - }, + replaceModule: replaceDiffPackageEntry("lib/patch/create.js"), }, { input: "src/common/third-party.js",