Skip to content

Commit 531d3fb

Browse files
committed
fix(compile): 修复同目录下同名不同后缀文件编译冲突
1 parent aba0339 commit 531d3fb

File tree

4 files changed

+18
-2
lines changed

4 files changed

+18
-2
lines changed

lib/models/Config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ var Config = function () {
6565
[].concat(files).forEach(function (file) {
6666
var entryFile = Array.isArray(file) ? file[file.length - 1] : file;
6767

68-
var name = entryFile.replace(/\.\w+$/g, '');
68+
var name = entryFile;
6969
if (name.indexOf('./') == 0) {
7070
name = name.substring(2);
7171
} else if (name[0] == '/') {

lib/plugins/extTemplatedPathPlugin.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module.exports = {
77
compiler.plugin("compilation", function (compilation) {
88
compilation.mainTemplate.plugin("asset-path", function (path, data) {
99
var extName = '[ext]';
10+
var baseName = '';
1011
if (data.chunk) {
1112
var _module = data.chunk.origins[0].module,
1213
rawRequest = _module.rawRequest ? _module.rawRequest : _module.dependencies[_module.dependencies.length - 1].userRequest;
@@ -23,6 +24,13 @@ module.exports = {
2324
extName = '.' + targetExtName;
2425
}
2526
});
27+
28+
// 替换[name]为文件名,如index.js:[name][ext] => index[ext]
29+
baseName = sysPath.basename(rawRequest, extName);
30+
baseName = baseName.split('.')[0];
31+
if (baseName) {
32+
path = path.replace(/\[name\]/g, baseName);
33+
}
2634
}
2735

2836
return path.replace(/\[ext\]/g, extName);

src/models/Config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class Config {
5959
[].concat(files).forEach((file) => {
6060
const entryFile = Array.isArray(file) ? file[file.length - 1] : file
6161

62-
var name = entryFile.replace(/\.\w+$/g, '');
62+
var name = entryFile;
6363
if (name.indexOf('./') == 0) {
6464
name = name.substring(2);
6565
} else if (name[0] == '/') {

src/plugins/extTemplatedPathPlugin.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module.exports = {
77
compiler.plugin("compilation", function(compilation) {
88
compilation.mainTemplate.plugin("asset-path", function(path, data) {
99
let extName = '[ext]';
10+
let baseName = '';
1011
if (data.chunk) {
1112
let module = data.chunk.origins[0].module,
1213
rawRequest = module.rawRequest
@@ -25,6 +26,13 @@ module.exports = {
2526
extName = '.' + targetExtName
2627
}
2728
})
29+
30+
// 替换[name]为文件名,如index.js:[name][ext] => index[ext]
31+
baseName = sysPath.basename(rawRequest, extName);
32+
baseName = baseName.split('.')[0]
33+
if(baseName) {
34+
path = path.replace(/\[name\]/g, baseName);
35+
}
2836
}
2937

3038
return path.replace(/\[ext\]/g, extName);

0 commit comments

Comments
 (0)