HappyPack是一個(gè)Webpack插件,它可以將Webpack中的loader的執(zhí)行過(guò)程分解成多個(gè)子進(jìn)程來(lái)執(zhí)行,從而提升構(gòu)建速度。
在Vue項(xiàng)目中使用HappyPack可以更好地優(yōu)化編譯速度。Vue項(xiàng)目中使用的loader大多數(shù)是為了處理.vue文件中的<template>、<script>和<style>標(biāo)簽內(nèi)容的,而這些內(nèi)容的處理時(shí)間一般比較長(zhǎng)。
const path = require('path'); const HappyPack = require('happypack'); const vueLoaderPlugin = require('vue-loader/lib/plugin'); module.exports = { entry: './src/main.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', options: { compilerOptions: { preserveWhitespace: false } } }, { test: /\.js$/, loader: 'happypack/loader?id=happyBabel', exclude: /node_modules/ }, { test: /\.css$/, use: ['style-loader', 'css-loader'] } ] }, plugins: [ new HappyPack({ id: 'happyBabel', loaders: [ { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } ], threadPool: HappyPack.ThreadPool({ size: 5 }) }), new vueLoaderPlugin() ] };
在Webpack配置文件中,我們將Vue-loader和Babel-loader的執(zhí)行過(guò)程交給了HappyPack,使用了線程池,以提高并行處理能力。這時(shí)我們可以使用以下命令編譯項(xiàng)目:
$ yarn add happyPack $ webpack --config webpack.config.js
這樣,我們就可以在Vue項(xiàng)目中使用HappyPack來(lái)加速編譯速度了。