1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
const { Configuration } = require('webpack'); const path = require('path'); const chalk = require("chalk"); const htmlWebPackPlugin = require('html-webpack-plugin'); const { VueLoaderPlugin } = require('vue-loader'); const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); const ProgressBarPlugin = require('progress-bar-webpack-plugin');
const config = { mode: 'development', resolve: { alias: { "@":path.resolve(__dirname,'/src') }, extensions:['.js','.json','.ts','.vue','.sass','.css'] }, entry: './src/main.ts', module: { rules: [ { test: /\.vue$/, use:"vue-loader" }, { test: /\.scss$/, use:['style-loader','css-loader','sass-loader'] }, { test: /\.css$/, use:['style-loader','css-loader'] }, { test: /\.ts$/, loader: "ts-loader", options: { configFile: path.resolve(process.cwd(), 'tsconfig.json'), appendTsSuffixTo: [/\.vue$/] }, } ] }, output: { filename: '[hash].js', path: path.resolve(__dirname, 'dist'), clean:true }, devServer: { client: { overlay:true }, port: 8088, open: true, }, stats:'errors-only', plugins: [ new htmlWebPackPlugin({ template:'./public/index.html' }), new VueLoaderPlugin(), new ProgressBarPlugin({ width: 50, format: chalk.blue.bold("build") + chalk.yellow('[:bar] ') + chalk.green.bold(':percent') + ' (:elapsed秒)', stream: process.stderr, complete: "#", clear: true, renderThrottle: "", callback() { console.log(chalk.red.bold("完成")) } }), new BundleAnalyzerPlugin(), ], externals: { vue: "Vue" }, }
module.exports = config
|