04_10.常用的webpack.config.js配置

2017-11-17  本文已影响0人  Robyn_Luo
  • npm init -y
  • npm i webpack -D
  • npm i webpack -g
  • npm i webpack -D
  • npm i html-webpack-plugin -D
  • npm i css-loader style-loader -D
  • npm i less less-loader -D
  • npm i node-sass sass-loader -D
  • npm i html-loader -D
  • npm i file-loader url-loader image-webpack-loader -D
  • npm i babel-loader babel-core babel-plugin-transform-runtime babel-preset-latest -D
  • npm i vue-loader vue-template-compiler -D
  • npm i clean-webpack-plugin -D
  • npm i webpack-dev-server -g
  • npm i webpack-dev-server -D
  • npm i optimize-css-assets-webpack-plugin -D
// 因为webpack里面有些路径配置, 必须是绝对路径, 导入这个模块是为了调用方法计算路径
const path = require('path');  
const htmlWebapckPlugin = require('html-webpack-plugin');
const cleanWebpackPlugin = require('clean-webpack-plugin');

// 配置文件要求我们必须导出一个配置对象
module.exports = {

    // 入口
    entry: path.resolve(__dirname, './src/main.js'),

    // 输出
    output: {
        // 路径
        path: path.resolve(__dirname, './dist'),
        // 打包后js文件名
        filename: 'bundle_[chunkhash:8].js'
    },

    //  插件配置
    plugins: [

        // 压缩html, 自动注入打包好的js文件到body里
        new htmlWebapckPlugin({
            template: './src/index.html',   // 要处理的html
            filename: 'index.html',         // 处理后的html名称
            inject: 'body',                 // 自动注入js到什么地方
            minify:{ // 压缩优化HTML页面
                collapseWhitespace:true, // 合并空白字符
                removeComments:true, // 移除注释
                removeAttributeQuotes:true // 移除属性上的引号
            }
        }),

        // 每次打包前先清除dist目录
        new cleanWebpackPlugin(['./dist'])
    ],

    // loader的作用是为了让webpack可以打包其他类型的模块
    module: {

        // 配置loader, 该配置选项是必须的
        rules: [    
            
            // 打包css
            {
                test: /\.css$/,
                use: [ 'style-loader', 'css-loader' ]
            },

            // 打包less
            {
                test: /\.less$/,
                use: [ 'style-loader', 'css-loader', 'less-loader' ]
            },

            // 打包html模版
            {
                test: /\.(html|tpl)$/,
                use: [ 'html-loader' ]
            },

            // 打包url文件
            {
                test: /\.(png|jpg|gif|jpeg|svg)$/,
                use: [
                    // 默认配置全部打包进来
                    // 'url-loader'

                    // 指定小于10kb的图片才转为base64编码打包
                    {loader: 'url-loader', options: {limit: 10240}}
                ]
            },

            // 打包特殊语法编写的js文件
            {
                test: /\.js$/,
                use: ['babel-loader'],
                exclude: path.resolve(__dirname, './node_modules')  // 打包的时候,如果项目引入了node-modules的东西,不打包它
            }
        ]
    }
};

上一篇 下一篇

猜你喜欢

热点阅读