UNPKG

kef-builder-buffet

Version:

buffet-builder构建工具

56 lines (52 loc) 1.79 kB
// 读取需要编译的文件 'use strict'; 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; } };