diff --git a/lib/compile-vue.js b/lib/compile-vue.js index 3fae656..ca0927f 100644 --- a/lib/compile-vue.js +++ b/lib/compile-vue.js @@ -112,7 +112,7 @@ export function parseJs( imports, { IS_MPA, currentPage, IS_ENTRY, DEPLOY_PATH, LEGACY_MODE } = {}, filename, - linePatch = 0 + linePatch = 1 ) { let fixedStyle = '' let ASSETS_DIR = '/@/' 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/dev.js b/lib/dev.js index 2ab47dd..1bc2b4b 100644 --- a/lib/dev.js +++ b/lib/dev.js @@ -166,13 +166,18 @@ export default async function createServer(root = '', conf = {}) { let entry = fs.cat(page.entry)?.toString() let html = fs.cat(join(process.cwd(), 'index.html')).toString() - entry = parseJs(entry, conf.imports, { - IS_MPA, - currentPage, - IS_ENTRY: true, - DEPLOY_PATH, - LEGACY_MODE - }) + entry = parseJs( + entry, + conf.imports, + { + IS_MPA, + currentPage, + IS_ENTRY: true, + DEPLOY_PATH, + LEGACY_MODE + }, + page.entry + ) code = parseHtml(html, { page, @@ -198,7 +203,6 @@ export default async function createServer(root = '', conf = {}) { file = join(SOURCE_DIR, rpath) } } else { - ndex.html file = join(SOURCE_DIR, rpath) } if (!fs.isfile(file)) { @@ -267,19 +271,25 @@ export default async function createServer(root = '', conf = {}) { if (fs.isfile(file)) { code = fs.cat(file) } else if (fs.isfile(join(PUBLIC_DIR, rpath))) { - code = fs.cat(join(PUBLIC_DIR, rpath)) + file = join(PUBLIC_DIR, rpath) + code = fs.cat(file) } else { friendlyErrors(rpath, ext) res.writeHead(404, USE_HTTPS ? void 0 : 'Not Found') res.end('') return } - code = parseJs(code + '', conf.imports, { - IS_MPA, - currentPage, - DEPLOY_PATH, - LEGACY_MODE - }) + code = parseJs( + code + '', + conf.imports, + { + IS_MPA, + currentPage, + DEPLOY_PATH, + LEGACY_MODE + }, + file + ) res.setHeader('content-type', MIME_TYPES.js) } 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,