From 35c566f1f513304f20bcbfa1c2157adaa30b8fa9 Mon Sep 17 00:00:00 2001 From: Bogdan Savluk Date: Sun, 7 Jun 2020 17:52:03 +0200 Subject: [PATCH] fix build config to work the same when running on windows --- babel.config.js | 18 +++++++++++++----- scripts/rollup-plugin-babel-source.js | 27 ++++++++++++++++++--------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/babel.config.js b/babel.config.js index 538d4c8b28fc..2e97375ae55b 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,5 +1,11 @@ "use strict"; +const path = require("path"); + +function normalize(src) { + return src.replace(/\//, path.sep); +} + module.exports = function (api) { const env = api.env(); @@ -93,7 +99,9 @@ module.exports = function (api) { "packages/*/test/fixtures", ignoreLib ? "packages/*/lib" : null, "packages/babel-standalone/babel.js", - ].filter(Boolean), + ] + .filter(Boolean) + .map(normalize), presets: [["@babel/env", envOpts]], plugins: [ // TODO: Use @babel/preset-flow when @@ -115,14 +123,14 @@ module.exports = function (api) { test: [ "packages/babel-parser", "packages/babel-helper-validator-identifier", - ], + ].map(normalize), plugins: [ "babel-plugin-transform-charcodes", ["@babel/transform-for-of", { assumeArray: true }], ], }, { - test: ["./packages/babel-cli", "./packages/babel-core"], + test: ["./packages/babel-cli", "./packages/babel-core"].map(normalize), plugins: [ // Explicitly use the lazy version of CommonJS modules. convertESM @@ -131,11 +139,11 @@ module.exports = function (api) { ].filter(Boolean), }, { - test: "./packages/babel-polyfill", + test: normalize("./packages/babel-polyfill"), presets: [["@babel/env", envOptsNoTargets]], }, { - test: unambiguousSources, + test: unambiguousSources.map(normalize), sourceType: "unambiguous", }, includeRegeneratorRuntime && { diff --git a/scripts/rollup-plugin-babel-source.js b/scripts/rollup-plugin-babel-source.js index 98e470705d2b..8527b10dff94 100644 --- a/scripts/rollup-plugin-babel-source.js +++ b/scripts/rollup-plugin-babel-source.js @@ -2,11 +2,16 @@ const path = require("path"); const fs = require("fs"); const dirname = path.join(__dirname, ".."); +const BABEL_SRC_REGEXP = + path.sep === "/" + ? /packages\/(babel-[^/]+)\/src\// + : /packages\\(babel-[^\\]+)\\src\\/; + module.exports = function () { return { name: "babel-source", load(id) { - const matches = id.match(/packages\/(babel-[^/]+)\/src\//); + const matches = id.match(BABEL_SRC_REGEXP); if (matches) { // check if browser field exists for this file and replace const packageFolder = path.join(dirname, "packages", matches[1]); @@ -16,18 +21,20 @@ module.exports = function () { packageJson["browser"] && typeof packageJson["browser"] === "object" ) { - for (let nodeFile in packageJson["browser"]) { + for (const nodeFile in packageJson["browser"]) { const browserFile = packageJson["browser"][nodeFile].replace( /^(\.\/)?lib\//, "src/" ); - nodeFile = nodeFile.replace(/^(\.\/)?lib\//, "src/"); - if (id.endsWith(nodeFile)) { + const nodeFileSrc = path.normalize( + nodeFile.replace(/^(\.\/)?lib\//, "src/") + ); + if (id.endsWith(nodeFileSrc)) { if (browserFile === false) { return ""; } return fs.readFileSync( - path.join(packageFolder, browserFile), + path.join(packageFolder, path.normalize(browserFile)), "UTF-8" ); } @@ -74,10 +81,12 @@ module.exports = function () { ? packageJson["browser"] : packageJson["main"]; - return path.join( - packageFolder, - // replace lib with src in the package.json entry - filename.replace(/^(\.\/)?lib\//, "src/") + return path.normalize( + path.join( + packageFolder, + // replace lib with src in the package.json entry + filename.replace(/^(\.\/)?lib\//, "src/") + ) ); }, };