webpack

一、webpack是什么? 

1.模块化:当你整个项目完成后,将你整个项目模块化.
2.自定义文件或npm i:可以将你自动的css文件,js文件或其他文件模块化,也可以在npm i下载安装的第三方库中文件模块化.
3.静态文件模块化:如果你接触过node,node虽然可以模块化,但不可以将静态文件模块化,webpack可以将静态文件模块化,这时候需要借助一些插件和加载器.

二、webpack的优势

1.代码分离:将不同功能的代码块分开,每一个文件是一个功能.可以实现高内聚,低耦合的状态.
2.装载器(css,sass,jsx等):比如你要讲css文件模块化,就需要借助css.loader和style.loader
3.智能解析:require('./components/'+names+'.ejs')/也可以用es6语法引入(import)

三、安装

1.安装node.js 
 
2.命令行node-v 查看版本号
3.安装全局webpack
     npm install  webpack -g
 
4.初始化,生成package.json
     npm init //这个需要手动创建package.json文件.
     npm init -y //可以自动创建.
 
5.项目目录安装
npm install --save-dev webpack
参数–save是要保存到package.json中,dev是在开发时使用这个包,而生产环境中不使用
 
6.查看版本号
     webpack-v

四、简单的打包 

1.新建一个index.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>webpack</title>
</head>
<body>
     <script src="bundle.js"></script>
</body>
</html>
2.新建一个index.js文件
     alert('hello webpack')
3.开始打包
     命令行输入 webpack index.js bundle.js
4.运行index.html文件 

五.webpack.config.js文件

module.exports={ //入口文件的配置项
entry:{}, //出口文件的配置项
output:{}, //模块:例如解读CSS,图片如何转换,压缩
module:{}, //插件,用于生产模版和各项功能
plugins:[], //配置webpack开发服务功能
devServer:{}
}
 
配置:
// 引入path
const path=require('path');
module.exports={
    //入口文件的配置项
    entry:{
        entry:'./src/entry.js'
    },
    //出口文件的配置项
    output:{
        // 打包的路径文件
        path:path.resolve(__dirname,'dist'),
        // 打包的文件名称
        filename:'bundle.js'
    },
    //模块:例如解读CSS,图片如何转换,压缩
    module:{},
    //插件,用于生产模版和各项功能
    plugins:[],
    //配置webpack开发服务功能
    devServer:{}
}
 
path.resolve(__dirname,'dist')是获取绝对路径

六、配置 webpack-dev-server

1.npm install webpack-dev-server –save-dev
 
①、配置webpack.config.js 中的devServer
 
devServer:{
        //设置基本目录结构
        contentBase:path.resolve(__dirname,'dist'),
        //服务器的IP地址,可以使用IP也可以使用localhost
        host:'localhost',
        //服务端压缩是否开启
        compress:true,
        //配置服务端口号
        port:3466
}
 
②、package.json里配置scripts选项
 
"scripts": {
    "server": "webpack-dev-server"
}
 
③、 启动
npm run server
 

七、css文件打包配置

①、建立一个index.css
body{
    background-color: rgb(255, 160, 131);
    color: white;
}
 
②、将index.css引入entry.js中
import css from './css/index.css';
 
③、安装style-loader和css-loader,用来解析CSS文件
npm install style-loader --save-dev
 
npm install  css-loader --save-dev
 
④、webpack.config.js中配置loaders
//模块:例如解读CSS,图片如何转换,压缩
    module:{
        rules: [
            {
                test: /.css$/,
                use: [ 'style-loader', 'css-loader' ]
            }
        ]
    }
 

八、js压缩

①、webpack.config.js中引入uglifyjs-webpack-plugin插件
const uglify = require('uglifyjs-webpack-plugin');
 
②、引入后在plugins配置里new一个 uglify对象
 
//插件,用于生产模版和各项功能
    plugins:[
        new uglify()
    ]

九、打包HTML文件

打包html文件
先把dist中的html文件剪切到src目录,并去掉JS引入代码(webpack会自动为我们引入JS),这才是真实工作的目录文件结构。
 
①、配置webpack.config.js文件,先引入我们的html-webpack-plugin插件
 
const htmlPlugin = require('html-webpack-plugin');
 
②、安装
 
npm install html-webpack-plugin --save-dev
 
③、配置webpack.config.js文件里的plugins
 
//插件,用于生产模版和各项功能
    plugins:[
        new htmlPlugin({
            // 对html文件进行压缩
            minify:{
                // 去掉属性的双引号
                removeAttributeQuotes:true
            },
            // 为了开发中js有缓存效果,这样可以有效避免缓存js
            hash:true,
            // 要打包的html模板路径和文件名称
            template:'./src/index.html'
        })
    ]

 Do not give easily-along-一个走在路上的web前端开发攻城狮~

原文地址:https://www.cnblogs.com/alongup/p/8999583.html