webpack基础

一,新建项目

新建一个空文件夹,如my-webpack,使用vscode打开该文件夹,执行npm init -y自动建立package.json文件。 在终端中执行npm install webpack webpack-cli -D,安装webpackwebpack-clicss

二,Entry

entry用来指定webpack的打包入口。html

1,单入口文件写法react

module.exports = {
    entry:'./src/index.js'
}
复制代码

2,多入口写法webpack

module.exports = {
    entry:{
        app:'./src/index.js',
        search:'./src/search.js'
    }
}
复制代码

三,Output

output用来告诉webpack将打包编译后的文件输出到哪里。 须要引入path模块。web

const path = require('path');
module.exports = {
    entry:'./src/index.js',
    output:{
        path:path.join(__dirname,'dist'),
        filename:'[name].js'
    }
}
复制代码

四,Mode

mode用来指定当前的构建环境:development,production,none;同时会设置process.env.Node_env的值。npm

五,解析ES6

使用babel-loader编译ES6语法: npm install babel-loader @babel/core -D。 同时在webpack配置文件中增长:json

module:{
    rules:[
        {
            test:/\.js$/,
            use:'babel-loader'
        }
    ]
}
复制代码

babel的配置文件是.babelrc文件:增长ES6babel preset配置浏览器

{
    "presets":[
        "@babel/preset-env",
        "@babel/preset-react"//解析react语法
    ],
    "plugins":[
        "@babel/proposal-class-properties"//解析class语法
    ]
}
复制代码

六,解析css

css-loader用于加载.css文件;style-loader将样式经过<style>标签插入到head中。bash

先安装css-loaderstyle-loader: npm install css-loader style-loader -Dbabel

webpack中添加配置:

module:{
    rules:[
        {
            test:/\.css$/,
            use:['style-loader','css-loader']
        }
    ]
}
复制代码

七,解析less

解析less文件须要安装less-loader:npm install less less-loader -D

在webpack中添加配置:

module:{
    rules:[
        {
            test:/\.less$/,
            use:['style-loader','css-loader','less-loader']
        }
    ]
}
复制代码

八,解析图片资源

解析图片资源须要使用url-loader:npm install url-loader -D

webpack中添加配置:

mofule:{
    rules:[
        {
            test:/\.(png|jpg|svg|gif|jpeg)$/,
            use:[{
                loader:'url-loader',
                options:{
                    //图片大小小于1M转化为base64
                    limit:10240
                }
            }]
        }
    ]
}
复制代码

九,解析字体资源

解析字体资源须要使用file-loader: npm install file-loader -D

webpack中添加配置:

module:{
    rules:[
        {
            test:/\.(woff|woff2|eot|ttf|otf)$/,
            use:'file-loader'
        }
    ]
}
复制代码

十,热更新

使用webpack-dev-server插件实现开发过程当中的代码热更新。WDS不刷新浏览器,不输出文件,而是放在内存中,须要配合使用webpack内置的HotModuleReplacementPlugin插件。

首先安装插件:npm install webpack-dev-server -D;

而后在webpack中添加配置:

const webpack = require('webpack');
module.exports = {
    ...
    plugins:[
        new webpack.HotModuleReplacementPlugin()
    ],
    devServer:{
        contentBase:'dist',
        hot:true,
        inline:true,
        port:8888
    }
}
复制代码

最后须要在package.json文件的scripts中增长一条命令:"dev":"webpack-dev-server --open"

十一,html-webpack-plugin

html-webpack-plugin的做用:1,根据指定的页面在内存中生成 指定的页面;2,自动 将生成的xxx.js文件引用到页面中去。首先安装插件:npm install html-webpack-plugin -D。 而后修改webpack配置:

const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    ...
    plugins:[
        new HtmlWebpackPlugin({
            template:path.join(__dirname,'src/index.html'),
            filename:'index.html'
        })
    ]
}
复制代码

至此在终端运行:npm run dev就能够在浏览器中打开咱们的页面,在代码中修改能够实现实时更新。

相关文章
相关标签/搜索