From ffa8e6cbae6da68940b5e3486aed5afb9c7d1084 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Thu, 16 Aug 2018 15:13:52 -0700 Subject: [PATCH] Allow babel-plugin/preset to be in package names outside the prefix, when used in a scope. (#8473) --- .../babel-core/src/config/files/plugins.js | 4 +- .../@foo/thing-babel-plugin/index.js | 3 ++ .../@foo/thing-babel-preset/index.js | 3 ++ .../@foo/thing.babel-plugin-convert/index.js | 3 ++ .../@foo/thing.babel-preset-convert/index.js | 3 ++ packages/babel-core/test/resolution.js | 40 +++++++++++++++++++ 6 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing-babel-plugin/index.js create mode 100644 packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing-babel-preset/index.js create mode 100644 packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing.babel-plugin-convert/index.js create mode 100644 packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing.babel-preset-convert/index.js diff --git a/packages/babel-core/src/config/files/plugins.js b/packages/babel-core/src/config/files/plugins.js index 75ed818cc0..6bef09039d 100644 --- a/packages/babel-core/src/config/files/plugins.js +++ b/packages/babel-core/src/config/files/plugins.js @@ -15,8 +15,8 @@ const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/; const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/; const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/; const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/; -const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?!babel-plugin(?:-|\/|$)|[^/]+\/)/; -const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?!babel-preset(?:-|\/|$)|[^/]+\/)/; +const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/; +const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/; const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/; export function resolvePlugin(name: string, dirname: string): string | null { diff --git a/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing-babel-plugin/index.js b/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing-babel-plugin/index.js new file mode 100644 index 0000000000..2987ecf017 --- /dev/null +++ b/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing-babel-plugin/index.js @@ -0,0 +1,3 @@ +module.exports = function() { + return {}; +}; diff --git a/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing-babel-preset/index.js b/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing-babel-preset/index.js new file mode 100644 index 0000000000..2987ecf017 --- /dev/null +++ b/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing-babel-preset/index.js @@ -0,0 +1,3 @@ +module.exports = function() { + return {}; +}; diff --git a/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing.babel-plugin-convert/index.js b/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing.babel-plugin-convert/index.js new file mode 100644 index 0000000000..2987ecf017 --- /dev/null +++ b/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing.babel-plugin-convert/index.js @@ -0,0 +1,3 @@ +module.exports = function() { + return {}; +}; diff --git a/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing.babel-preset-convert/index.js b/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing.babel-preset-convert/index.js new file mode 100644 index 0000000000..2987ecf017 --- /dev/null +++ b/packages/babel-core/test/fixtures/resolution/foo-org-paths/node_modules/@foo/thing.babel-preset-convert/index.js @@ -0,0 +1,3 @@ +module.exports = function() { + return {}; +}; diff --git a/packages/babel-core/test/resolution.js b/packages/babel-core/test/resolution.js index 0535cc11a4..4280b27ddd 100644 --- a/packages/babel-core/test/resolution.js +++ b/packages/babel-core/test/resolution.js @@ -134,6 +134,46 @@ describe("addon resolution", function() { }); }); + it("should find @foo scoped presets with an inner babel-preset", function() { + process.chdir("foo-org-paths"); + + babel.transform("", { + filename: "filename.js", + babelrc: false, + presets: ["@foo/thing.babel-preset-convert"], + }); + }); + + it("should find @foo scoped plugins with an inner babel-plugin", function() { + process.chdir("foo-org-paths"); + + babel.transform("", { + filename: "filename.js", + babelrc: false, + plugins: ["@foo/thing.babel-plugin-convert"], + }); + }); + + it("should find @foo scoped presets with an babel-preset suffix", function() { + process.chdir("foo-org-paths"); + + babel.transform("", { + filename: "filename.js", + babelrc: false, + presets: ["@foo/thing-babel-preset"], + }); + }); + + it("should find @foo scoped plugins with an babel-plugin suffix", function() { + process.chdir("foo-org-paths"); + + babel.transform("", { + filename: "filename.js", + babelrc: false, + plugins: ["@foo/thing-babel-plugin"], + }); + }); + it("should find @foo scoped presets with an existing prefix", function() { process.chdir("foo-org-paths");