From cfb28d632caf539d68cbbea89a5c2f241f681707 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Tue, 21 Apr 2020 15:09:26 +0800 Subject: [PATCH] Use `resolve` if `require.resolve` is overridden (#8072) --- .github/workflows/dev-test.yml | 14 ++++++++++++++ .github/workflows/prod-test.yml | 7 +++++++ package.json | 1 + src/common/resolve.js | 19 +++++++++++++------ yarn.lock | 7 +++++++ 5 files changed, 42 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dev-test.yml b/.github/workflows/dev-test.yml index a8f9464c298d..a04bfe9bc1f7 100644 --- a/.github/workflows/dev-test.yml +++ b/.github/workflows/dev-test.yml @@ -67,3 +67,17 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage/lcov.info fail_ci_if_error: true + + # #8073 test + - name: Run Tests (PRETTIER_FALLBACK_RESOLVE) + run: yarn test "tests_integration/__tests__/(config|plugin)" + env: + PRETTIER_FALLBACK_RESOLVE: true + + - name: Upload Coverage (PRETTIER_FALLBACK_RESOLVE) + uses: codecov/codecov-action@v1 + if: matrix.ENABLE_CODE_COVERAGE + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: ./coverage/lcov.info + fail_ci_if_error: true diff --git a/.github/workflows/prod-test.yml b/.github/workflows/prod-test.yml index d84ca7a1bd88..b4a19447c082 100644 --- a/.github/workflows/prod-test.yml +++ b/.github/workflows/prod-test.yml @@ -131,3 +131,10 @@ jobs: - name: Run Tests (standalone) (Linux and Windows) if: matrix.os != 'macos-latest' run: yarn test:dist-standalone --maxWorkers=2 + + # #8073 test + - name: Run Tests (PRETTIER_FALLBACK_RESOLVE) + run: yarn test "tests_integration/__tests__/(config|plugin)" + env: + NODE_ENV: production + PRETTIER_FALLBACK_RESOLVE: true diff --git a/package.json b/package.json index 4e6eaa9040cf..ec8e4e693ff8 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "regexp-util": "1.2.2", "remark-math": "1.0.6", "remark-parse": "5.0.0", + "resolve": "1.16.0", "semver": "7.3.2", "srcset": "2.0.1", "string-width": "4.2.0", diff --git a/src/common/resolve.js b/src/common/resolve.js index 183b59429766..f413d1cae388 100644 --- a/src/common/resolve.js +++ b/src/common/resolve.js @@ -1,12 +1,19 @@ "use strict"; -let { resolve } = eval("require"); +// `/scripts/build/babel-plugins/transform-custom-require.js` doesn't support destructuring. +// eslint-disable-next-line prefer-destructuring +let resolve = eval("require").resolve; -// In the VS Code extension `require` is overridden and `require.resolve` doesn't support the 2nd argument. -if (resolve.length === 1) { - const Module = eval("require")("module"); - const createRequire = Module.createRequire || Module.createRequireFromPath; - resolve = createRequire(__dirname).resolve; +// In the VS Code and Atom extensions `require` is overridden and `require.resolve` doesn't support the 2nd argument. +if (resolve.length === 1 || process.env.PRETTIER_FALLBACK_RESOLVE) { + resolve = (id, options) => { + let basedir; + if (options && options.paths && options.paths.length === 1) { + basedir = options.paths[0]; + } + + return require("resolve").sync(id, { basedir }); + }; } module.exports = resolve; diff --git a/yarn.lock b/yarn.lock index 673e746d45bb..43b40209dce5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6602,6 +6602,13 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +resolve@1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.16.0.tgz#063dc704fa3413e13ac1d0d1756a7cbfe95dd1a7" + integrity sha512-LarL/PIKJvc09k1jaeT4kQb/8/7P+qV4qSnN2K80AES+OHdfZELAKVOBjxsvtToT/uLOfFbvYvKfZmV8cee7nA== + dependencies: + path-parse "^1.0.6" + resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.3.2: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"