From c037a2d84fee2079e72007aa4edf0ab0eee9dfd2 Mon Sep 17 00:00:00 2001 From: remorses Date: Tue, 7 Jul 2020 19:37:57 +0200 Subject: [PATCH 1/2] support for regex --- README.md | 4 ++-- lib/index.js | 12 ++++++++++-- src/index.js | 11 +++++++++-- test/index.js | 11 +++++++++++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2551622..30b5791 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,8 @@ Via `.babelrc` or babel-loader. dest: 'lib1' }, { - src: 'test2', - dest: 'lib2' + src: /test\/(\w+)/, + dest: 'test/$1/src' } ] ``` diff --git a/lib/index.js b/lib/index.js index d8c3bc7..569dddf 100644 --- a/lib/index.js +++ b/lib/index.js @@ -14,8 +14,16 @@ function replaceImportPathPlugin(path, t, opts) { } var node = path.node; - if (node && node.source.value === src) { - node.source.value = dest; + if (!node || !src) { + return; + } + if (typeof src === 'string') { + if (node.source.value === src) { + node.source.value = dest; + } + } else { + // src is a regex + node.source.value = node.source.value.replace(src, dest); } } diff --git a/src/index.js b/src/index.js index 5089d03..ee6c287 100644 --- a/src/index.js +++ b/src/index.js @@ -6,8 +6,15 @@ function replaceImportPathPlugin (path, t, opts) { } const node = path.node; - if (node && node.source.value === src) { - node.source.value = dest; + if (!node || !src) { + return + } + if (typeof src === 'string') { + if (node.source.value === src) { + node.source.value = dest; + } + } else { // src is a regex + node.source.value = node.source.value.replace(src, dest) } } diff --git a/test/index.js b/test/index.js index 3339863..3b2babf 100644 --- a/test/index.js +++ b/test/index.js @@ -24,4 +24,15 @@ describe('replace import path', () => { const expected = 'import A from "testaaaa";'; expect(expected === result.code).to.be.true; }); + + it('replace with regex', () => { + const result = babel.transform('import A from "test/dir"', { + plugins: [[replaceImportPath, { + src: /test\/(\w+)/, + dest: 'test/$1/src' + }]] + }); + const expected = 'import A from "test/dir/src";'; + expect(result.code).to.be.eq(expected); + }); }); \ No newline at end of file From 5c90e139b8f53b17df54084ea3b97b4941776a97 Mon Sep 17 00:00:00 2001 From: remorses Date: Tue, 7 Jul 2020 19:39:09 +0200 Subject: [PATCH 2/2] index: lint is happy --- src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index ee6c287..4735f2d 100644 --- a/src/index.js +++ b/src/index.js @@ -7,14 +7,14 @@ function replaceImportPathPlugin (path, t, opts) { const node = path.node; if (!node || !src) { - return + return; } if (typeof src === 'string') { if (node.source.value === src) { node.source.value = dest; } } else { // src is a regex - node.source.value = node.source.value.replace(src, dest) + node.source.value = node.source.value.replace(src, dest); } }