From f75f717c4e1c113fcf735a2af6121beb211a4a94 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Wed, 23 Aug 2023 14:58:06 +0800 Subject: [PATCH] Allow break `require()` argument (#15256) --- changelog_unreleased/javascript/15256.md | 23 +++++++++++++++++++ src/language-js/print/call-expression.js | 3 ++- .../require/__snapshots__/jsfmt.spec.js.snap | 23 +++++++++++++++++++ tests/format/js/require/require.js | 13 +++++++++++ 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 changelog_unreleased/javascript/15256.md diff --git a/changelog_unreleased/javascript/15256.md b/changelog_unreleased/javascript/15256.md new file mode 100644 index 000000000..463bd2c5e --- /dev/null +++ b/changelog_unreleased/javascript/15256.md @@ -0,0 +1,23 @@ +#### Allow argument of `require()` to break (#15256 by @fisker) + + +```jsx +// Input +const plugin = require( + global.STANDALONE + ? path.join(__dirname, "../standalone.js") + : path.join(__dirname, "..") +); + +// Prettier stable +const plugin = require(global.STANDALONE + ? path.join(__dirname, "../standalone.js") + : path.join(__dirname, "..")); + +// Prettier main +const plugin = require( + global.STANDALONE + ? path.join(__dirname, "../standalone.js") + : path.join(__dirname, "..") +); +``` diff --git a/src/language-js/print/call-expression.js b/src/language-js/print/call-expression.js index ca88cbf66..77dc92ef5 100644 --- a/src/language-js/print/call-expression.js +++ b/src/language-js/print/call-expression.js @@ -89,7 +89,8 @@ function isCommonsJsOrAmdCall(node, parentNode) { } if (node.callee.name === "require") { - return true; + const args = getCallArguments(node); + return (args.length === 1 && isStringLiteral(args[0])) || args.length > 1; } if (node.callee.name === "define") { diff --git a/tests/format/js/require/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/require/__snapshots__/jsfmt.spec.js.snap index b7eb9a791..4fb6b5bf4 100644 --- a/tests/format/js/require/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/require/__snapshots__/jsfmt.spec.js.snap @@ -11,6 +11,19 @@ const { one1, two1, three1, four1, five1, six1, seven1, eight1, nine1, ten1, ele const MyReallyExtrememlyLongModuleName = require('MyReallyExtrememlyLongModuleName'); +const plugin = require( + global.STANDALONE + ? path.join(__dirname, "../standalone.js") + : path.join(__dirname, "..") +); + +const plugin2 = require( + path.join( + __dirname, + global.STANDALONE ? "../standalone.js" : '..' + ) +); + =====================================output===================================== const { one, @@ -40,5 +53,15 @@ const { const MyReallyExtrememlyLongModuleName = require("MyReallyExtrememlyLongModuleName"); +const plugin = require( + global.STANDALONE + ? path.join(__dirname, "../standalone.js") + : path.join(__dirname, ".."), +); + +const plugin2 = require( + path.join(__dirname, global.STANDALONE ? "../standalone.js" : ".."), +); + ================================================================================ `; diff --git a/tests/format/js/require/require.js b/tests/format/js/require/require.js index a990ca9f3..0ab375268 100644 --- a/tests/format/js/require/require.js +++ b/tests/format/js/require/require.js @@ -2,3 +2,16 @@ const { one, two, three, four, five, six, seven, eight, nine, ten } = require('. const { one1, two1, three1, four1, five1, six1, seven1, eight1, nine1, ten1, eleven1 } = require('./my-utils'); const MyReallyExtrememlyLongModuleName = require('MyReallyExtrememlyLongModuleName'); + +const plugin = require( + global.STANDALONE + ? path.join(__dirname, "../standalone.js") + : path.join(__dirname, "..") +); + +const plugin2 = require( + path.join( + __dirname, + global.STANDALONE ? "../standalone.js" : '..' + ) +);