kef-builder-buffet
Version:
buffet-builder构建工具
56 lines (52 loc) • 1.79 kB
JavaScript
// 读取需要编译的文件
;
const path = require('path');
const getEntryByAbc = require('./getEntryByAbc');
const walk = require('./walk');
const CONST = require('../utils/const');
/**
* 获取项目中符合 src/pages/xxxx/index.jsx 的文件
* 或者在 abc.webpack.entry 对象,这个优先级最高
*
* @param {Object} abcConfig abc.json 的对象
* @return {Object} entry 的 kv 对象
*/
module.exports = function getEntry(abcConfig) {
// abcConfig.webpack.entry 的优先级比 pages 高
const customEntry = getEntryByAbc(abcConfig);
if (customEntry && Object.keys(customEntry).length) {
return customEntry;
}
if (CONST.isSinglePageApp) {
return {
// spa 默认入口 不带后缀,自动解析
index: './src/index'
}
}
var entryDir = './src';
var entryObj = {};
try {
var files = walk(entryDir);
files.forEach(function (filePath) {
var fileExt = path.extname(filePath);
var fileBasename = path.basename(filePath, fileExt);
var pageFile = path.relative(entryDir, filePath);
var pageDirTree = pageFile.split(path.sep);
if (
(fileExt === '.jsx' || fileExt === '.js' || fileExt === '.tsx' || fileExt === '.ts') &&
fileBasename === 'index' &&
pageDirTree.length === 3 &&
pageDirTree[0] === 'pages'
) {
pageDirTree.pop();
// index
pageDirTree.push('index');
var pageName = pageDirTree.join('/');
entryObj[pageName] = filePath;
}
});
return entryObj;
} catch (err) {
throw err;
}
};