Merge branch 'hotfix-exports' into hotfix-ignore-same-name
diff --git a/src/parser.js b/src/parser.js
index 3b3305f..cb16ad0 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -14,6 +14,7 @@
getNameByPath,
checkFileExist,
depHasRequired,
+ parseElementNameByPath,
stringifyFunction,
appendToWarn
} from './util'
@@ -121,7 +122,14 @@
let requireContent = ''
if (deps.length) {
- requireContent += deps.map(dep =>
+ const entryElementName = parseElementNameByPath(params.resourcePath)
+ requireContent += deps.filter(dep => {
+ if (parseElementNameByPath(dep) === entryElementName) {
+ console.warn(`[Warn]: "${dep}" cannot include <${entryElementName}> itself.`)
+ return false
+ }
+ return true
+ }).map(dep =>
depHasRequired(content, dep) ? 'require("' + dep + '");' : ''
).join('\n')
if (requireContent) {
diff --git a/src/util.js b/src/util.js
index d631779..629f1e3 100644
--- a/src/util.js
+++ b/src/util.js
@@ -44,3 +44,7 @@
export function depHasRequired (content, dep) {
return !content.match(new RegExp('require\\(["\']./' + path.basename(dep) + '(.we)?["\']\\)', 'g'))
}
+
+export function parseElementNameByPath (filepath) {
+ return path.parse(filepath).name
+}
diff --git a/test/expect/samename.we b/test/expect/samename.we
new file mode 100644
index 0000000..9020bf9
--- /dev/null
+++ b/test/expect/samename.we
@@ -0,0 +1,3 @@
+<template>
+ <samename></samename>
+</template>
diff --git a/test/test.js b/test/test.js
index ea6973c..fb27960 100644
--- a/test/test.js
+++ b/test/test.js
@@ -81,6 +81,16 @@
expect(actualJson).eql(expectJson);
});
+ it('ignore include same name element file', function() {
+ var name = 'samename.js';
+
+ var actualCodePath = path.resolve(__dirname, 'actual', name);
+ var actualCodeContent = fs.readFileSync(actualCodePath, { encoding: 'utf8' });
+
+ var matches = actualCodeContent.match(/"type"\: "samename"/g)
+ expect(matches.length).eql(1);
+ });
+
it('support source map', function() {
var name = 'sourcemap'
diff --git a/test/webpack.config.js b/test/webpack.config.js
index 4dfc1a8..5266dae 100644
--- a/test/webpack.config.js
+++ b/test/webpack.config.js
@@ -3,6 +3,7 @@
module.exports = {
entry: {
sourcemap: path.resolve(__dirname, 'expect/sourcemap.we?entry=true'),
+ samename: path.resolve(__dirname, 'expect/samename.we?entry=true'),
exports: path.resolve(__dirname, 'expect/exports.we?entry=true'),
a: path.resolve(__dirname, 'a.js?entry=true'),
b: path.resolve(__dirname, 'expect/b.we?entry=true'),