diff --git a/package.json b/package.json index 055b3b0..09b1809 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "license": "MIT", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "jest" }, "repository": { "type": "git", @@ -20,6 +20,7 @@ "loader-utils": "^1.1.0" }, "devDependencies": { + "jest": "^24.1.0", "webpack": "^2.2.1" } } diff --git a/src/loader.js b/src/loader.js index 053720f..5c42618 100644 --- a/src/loader.js +++ b/src/loader.js @@ -5,7 +5,7 @@ const { tag, prefixTag } = require('./tag-map'); function replaceTag(source, tagMap) { Object.keys(tagMap).forEach(i => { - source = source.replace(new RegExp(`<${i}(?!-)`, 'g'), `<${tagMap[i]}`) + source = source.replace(new RegExp(`<${i}(?![-a-zA-Z])`, 'g'), `<${tagMap[i]}`) .replace(new RegExp(`<\/${i}>`, 'g'), `<\/${tagMap[i]}>`); }) return source; diff --git a/test/loader.test.js b/test/loader.test.js new file mode 100644 index 0000000..06cad67 --- /dev/null +++ b/test/loader.test.js @@ -0,0 +1,24 @@ +const originLoader = require('../src/loader') + +const baseLoaderContext = { + cacheable: () => { }, +} +const normalLoader = originLoader.bind({ + ...baseLoaderContext, + query: '?prefix=false', +}) + +const prefixLoader = originLoader.bind({ + ...baseLoaderContext, + query: '?prefix=true', +}) + +test('替换该替换的标签', () => { + expect(normalLoader('<Circle></Circle>')).toBe('<i-circle></i-circle>') + expect(prefixLoader('<i-table></i-table>')).toBe('<Table></Table>') +}) + +test('不替换该不替换的标签', () => { + expect(normalLoader('<CircleLoading></CircleLoading>')).toBe('<CircleLoading></CircleLoading>') + expect(prefixLoader('<i-table-header></i-table-header>')).toBe('<i-table-header></i-table-header>') +}) \ No newline at end of file