diff --git a/lib/compile.js b/lib/compile.js index 5b3509c..f982d35 100644 --- a/lib/compile.js +++ b/lib/compile.js @@ -18,6 +18,7 @@ export async function compileFiles( options, { verbose, imports, dist } = {} ) { + let pageDir = options.IS_MPA && currentPage ? `pages/${currentPage}` : '' options.currentPage = currentPage for (let [path, it] of files) { @@ -40,8 +41,6 @@ export async function compileFiles( verbose && console.log(' 解析 %s ...', it.name) - let pageDir = options.IS_MPA && currentPage ? `pages/${currentPage}` : '' - switch (it.ext) { case '.vue': { diff --git a/lib/prod.js b/lib/prod.js index 6991cdc..3247c94 100644 --- a/lib/prod.js +++ b/lib/prod.js @@ -74,22 +74,6 @@ export default function compile(root = '', dist = '', conf = {}, verbose) { : isCustomElement || defaultCustomElement } - // 创建线程池 - if (THREADS_NUM > 0) { - for (let i = 0; i < THREADS_NUM; i++) { - WORKER_POOL.add( - new Worker(join(__dirname, './thread.js'), { - workerData: { - options, - verbose, - dist, - imports: conf.imports - } - }) - ) - } - } - fs.ls(SOURCE_DIR, true).forEach(path => { if (fs.isdir(path)) { return @@ -108,14 +92,29 @@ export default function compile(root = '', dist = '', conf = {}, verbose) { return } - if (it.path === conf.inject.scss) { + if (path === conf.inject.scss) { return } - list.set(path, it) } }) + // 创建线程池 + if (THREADS_NUM > 0 && (IS_MPA || list.size > THREADS_NUM * 10)) { + for (let i = 0; i < THREADS_NUM; i++) { + WORKER_POOL.add( + new Worker(join(__dirname, './thread.js'), { + workerData: { + options, + verbose, + dist, + imports: conf.imports + } + }) + ) + } + } + // 优先处理静态目录, 之后的源码目录中, 以便如果有产生相同的文件名, 则覆盖静态目录中的文件 if (fs.isdir(PUBLIC_DIR)) { console.log('\n正在处理静态资源 ...') @@ -152,6 +151,7 @@ export default function compile(root = '', dist = '', conf = {}, verbose) { list.delete(path) files.set(path, { name, ext }) }) + if (THREADS_NUM > 0) { chunk.set(currentPage, { page, files }) JOBS_QUEUE.push(chunk) @@ -187,11 +187,10 @@ export default function compile(root = '', dist = '', conf = {}, verbose) { let currentPage = PAGES_KEYS[0] let page = conf.pages[currentPage] - list = [...list] - console.log(`正在生成 ${currentPage}.html ...`) - if (THREADS_NUM > 0) { + if (THREADS_NUM > 0 && list.size > THREADS_NUM * 10) { + list = [...list] for (let i = 0; i < THREADS_NUM; i++) { let start = i * chunkSize let end = start + chunkSize @@ -203,6 +202,7 @@ export default function compile(root = '', dist = '', conf = {}, verbose) { doJob() } } else { + options.isCustomElement = isCustomElement || defaultCustomElement compileFiles(currentPage, page, list, options, { verbose, dist,