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..4735f2d 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