@@ -12,8 +12,7 @@ const { require } = createEsmUtils(import.meta);
1212 * @property {'node' | 'universal' } target - should generate a CJS only for node or universal bundle
1313 * @property {'core' | 'plugin' } type - it's a plugin bundle or core part of prettier
1414 * @property {string[] } external - array of paths that should not be included in the final bundle
15- * @property {Object.<string, string | {code: string}> } replaceModule - module replacement path or code
16- * @property {{file: string, find: string, replacement: string}[] } replaceText - Text replacements
15+ * @property {object[] } replaceModule - Module replacements
1716 * @property {string[] } babelPlugins - babel plugins
1817 * @property {boolean? } minify - minify
1918 * @property {string[]? } esbuildTarget - ESBuild target
@@ -31,10 +30,8 @@ To reduce the bundle size, replace the entry with smaller files.
3130We can switch to deep require once https://github.com/kpdecker/jsdiff/pull/351 get merged
3231*/
3332const replaceDiffPackageEntry = ( file ) => ( {
34- [ require . resolve ( "diff" ) ] : path . join (
35- path . dirname ( require . resolve ( "diff/package.json" ) ) ,
36- file
37- ) ,
33+ module : require . resolve ( "diff" ) ,
34+ path : path . join ( path . dirname ( require . resolve ( "diff/package.json" ) ) , file ) ,
3835} ) ;
3936
4037/** @type {Bundle[] } */
@@ -44,51 +41,51 @@ const parsers = [
4441 } ,
4542 {
4643 input : "src/language-js/parse/flow.js" ,
47- replaceText : [
44+ replaceModule : [
4845 // `flow-parser` use this for `globalThis`, can't work in strictMode
4946 {
50- file : require . resolve ( "flow-parser" ) ,
47+ module : require . resolve ( "flow-parser" ) ,
5148 find : "(function(){return this}())" ,
5249 replacement : "(globalThis)" ,
5350 } ,
5451 ] ,
5552 } ,
5653 {
5754 input : "src/language-js/parse/typescript.js" ,
58- replaceText : [
55+ replaceModule : [
5956 // `@typescript-eslint/typescript-estree` v4
6057 {
61- file : "*" ,
58+ module : "*" ,
6259 find : 'require("globby")' ,
6360 replacement : "{}" ,
6461 } ,
6562 {
66- file : "*" ,
63+ module : "*" ,
6764 find : "extra.projects = prepareAndTransformProjects(" ,
6865 replacement : "extra.projects = [] || prepareAndTransformProjects(" ,
6966 } ,
7067 {
71- file : "*" ,
68+ module : "*" ,
7269 find : "process.versions.node" ,
7370 replacement : JSON . stringify ( "999.999.999" ) ,
7471 } ,
7572 {
76- file : "*" ,
73+ module : "*" ,
7774 find : "process.cwd()" ,
7875 replacement : JSON . stringify ( "/prettier-security-dirname-placeholder" ) ,
7976 } ,
8077 {
81- file : "*" ,
78+ module : "*" ,
8279 find : 'require("perf_hooks")' ,
8380 replacement : "{}" ,
8481 } ,
8582 {
86- file : "*" ,
83+ module : "*" ,
8784 find : 'require("inspector")' ,
8885 replacement : "{}" ,
8986 } ,
9087 {
91- file : "*" ,
88+ module : "*" ,
9289 find : "typescriptVersionIsAtLeast[version] = semverCheck(version);" ,
9390 replacement : "typescriptVersionIsAtLeast[version] = true;" ,
9491 } ,
@@ -137,29 +134,29 @@ const parsers = [
137134 'require("source-map-support").install()' : "" ,
138135 "require(modulePath)" : "undefined" ,
139136 } ) . map ( ( [ find , replacement ] ) => ( {
140- file : require . resolve ( "typescript" ) ,
137+ module : require . resolve ( "typescript" ) ,
141138 find,
142139 replacement,
143140 } ) ) ,
141+ {
142+ module : require . resolve ( "debug/src/browser.js" ) ,
143+ path : require . resolve ( "./shims/debug.cjs" ) ,
144+ } ,
144145 ] ,
145- replaceModule : {
146- [ require . resolve ( "debug/src/browser.js" ) ] :
147- require . resolve ( "./shims/debug.cjs" ) ,
148- } ,
149146 } ,
150147 {
151148 input : "src/language-js/parse/acorn-and-espree.js" ,
152149 name : "prettierPlugins.espree" ,
153150 // TODO: Rename this file to `parser-acorn-and-espree.js` or find a better way
154151 output : "parser-espree.js" ,
155- replaceText : [
152+ replaceModule : [
156153 {
157- file : require . resolve ( "espree" ) ,
154+ module : require . resolve ( "espree" ) ,
158155 find : "const Syntax = (function() {" ,
159156 replacement : "const Syntax = undefined && (function() {" ,
160157 } ,
161158 {
162- file : require . resolve ( "espree" ) ,
159+ module : require . resolve ( "espree" ) ,
163160 find : "var visitorKeys = require('eslint-visitor-keys');" ,
164161 replacement : "var visitorKeys;" ,
165162 } ,
@@ -170,21 +167,21 @@ const parsers = [
170167 } ,
171168 {
172169 input : "src/language-js/parse/angular.js" ,
173- replaceText : [
170+ replaceModule : [
174171 {
175- file : "*" ,
172+ module : "*" ,
176173 find : 'require("@angular/compiler/src/' ,
177174 replacement : 'require("@angular/compiler/esm2015/src/' ,
178175 } ,
179176 ] ,
180177 } ,
181178 {
182179 input : "src/language-css/parser-postcss.js" ,
183- replaceText : [
180+ replaceModule : [
184181 {
185182 // `postcss-values-parser` uses constructor.name, it will be changed by bundler
186183 // https://github.com/shellscape/postcss-values-parser/blob/c00f858ab8c86ce9f06fdb702e8f26376f467248/lib/parser.js#L499
187- file : require . resolve ( "postcss-values-parser/lib/parser.js" ) ,
184+ module : require . resolve ( "postcss-values-parser/lib/parser.js" ) ,
188185 find : "node.constructor.name === 'Word'" ,
189186 replacement : "node.type === 'word'" ,
190187 } ,
@@ -195,10 +192,12 @@ const parsers = [
195192 } ,
196193 {
197194 input : "src/language-markdown/parser-markdown.js" ,
198- replaceModule : {
199- [ require . resolve ( "parse-entities/decode-entity.browser.js" ) ] :
200- require . resolve ( "parse-entities/decode-entity.js" ) ,
201- } ,
195+ replaceModule : [
196+ {
197+ module : require . resolve ( "parse-entities/decode-entity.browser.js" ) ,
198+ path : require . resolve ( "parse-entities/decode-entity.js" ) ,
199+ } ,
200+ ] ,
202201 } ,
203202 {
204203 input : "src/language-handlebars/parser-glimmer.js" ,
@@ -208,12 +207,13 @@ const parsers = [
208207 } ,
209208 {
210209 input : "src/language-yaml/parser-yaml.js" ,
211- replaceModule : {
210+ replaceModule : [
212211 // Use `tslib.es6.js`, so we can avoid `globalThis` shim
213- [ require . resolve ( "tslib" ) ] : require
214- . resolve ( "tslib" )
215- . replace ( / t s l i b \. j s $ / , "tslib.es6.js" ) ,
216- } ,
212+ {
213+ module : require . resolve ( "tslib" ) ,
214+ path : require . resolve ( "tslib" ) . replace ( / t s l i b \. j s $ / , "tslib.es6.js" ) ,
215+ } ,
216+ ] ,
217217 } ,
218218] . map ( ( bundle ) => {
219219 const { name } = bundle . input . match (
@@ -233,14 +233,14 @@ const parsers = [
233233const coreBundles = [
234234 {
235235 input : "src/index.js" ,
236- replaceText : [
236+ replaceModule : [
237237 {
238- file : require . resolve ( "@iarna/toml/lib/toml-parser.js" ) ,
238+ module : require . resolve ( "@iarna/toml/lib/toml-parser.js" ) ,
239239 find : "const utilInspect = eval(\"require('util').inspect\")" ,
240240 replacement : "const utilInspect = require('util').inspect" ,
241241 } ,
242+ replaceDiffPackageEntry ( "lib/diff/array.js" ) ,
242243 ] ,
243- replaceModule : replaceDiffPackageEntry ( "lib/diff/array.js" ) ,
244244 } ,
245245 {
246246 input : "src/document/index.js" ,
@@ -254,14 +254,17 @@ const coreBundles = [
254254 input : "src/standalone.js" ,
255255 name : "prettier" ,
256256 target : "universal" ,
257- replaceModule : {
258- [ require . resolve ( "@babel/highlight" ) ] : require . resolve (
259- "./shims/babel-highlight.cjs"
260- ) ,
261- [ createRequire ( require . resolve ( "vnopts" ) ) . resolve ( "chalk" ) ] :
262- require . resolve ( "./shims/chalk.cjs" ) ,
263- ...replaceDiffPackageEntry ( "lib/diff/array.js" ) ,
264- } ,
257+ replaceModule : [
258+ {
259+ module : require . resolve ( "@babel/highlight" ) ,
260+ path : require . resolve ( "./shims/babel-highlight.cjs" ) ,
261+ } ,
262+ {
263+ module : createRequire ( require . resolve ( "vnopts" ) ) . resolve ( "chalk" ) ,
264+ path : require . resolve ( "./shims/chalk.cjs" ) ,
265+ } ,
266+ replaceDiffPackageEntry ( "lib/diff/array.js" ) ,
267+ ] ,
265268 } ,
266269 {
267270 input : "bin/prettier.js" ,
@@ -273,16 +276,17 @@ const coreBundles = [
273276 input : "src/cli/index.js" ,
274277 output : "cli.js" ,
275278 external : [ "benchmark" ] ,
276- replaceModule : replaceDiffPackageEntry ( "lib/patch/create.js" ) ,
279+ replaceModule : [ replaceDiffPackageEntry ( "lib/patch/create.js" ) ] ,
277280 } ,
278281 {
279282 input : "src/common/third-party.js" ,
280- replaceModule : {
283+ replaceModule : [
281284 // cosmiconfig@6 -> import-fresh can't find parentModule, since module is bundled
282- [ require . resolve ( "parent-module" ) ] : require . resolve (
283- "./shims/parent-module.cjs"
284- ) ,
285- } ,
285+ {
286+ module : require . resolve ( "parent-module" ) ,
287+ path : require . resolve ( "./shims/parent-module.cjs" ) ,
288+ } ,
289+ ] ,
286290 } ,
287291] . map ( ( bundle ) => ( {
288292 type : "core" ,
0 commit comments