webpack 4.x

ES Moudule 
    注意:使用es6导入就必须使用ES6导出
    引入: import xx from './....'
    导出 export default xx
 commonJS
 	引入 require(路径)
 	导出 modules.exports= xx
 CMD
 ADM

webpack 4.X

    "webpack": "^4.43.0", / '4.26.0'
    "webpack-cli": "^3.3.11" / '3.1.2'

webpack 模块打包工具 (js翻译器 可以识别import和require引入)

注意:引入的js文件和css文件打包的方式是不同的

wepack 安装 与 初始化

webpack 不建议安装全局

查看webpack的版本
在工程目录下 npx webpack -v (npx在当前项目目录的node_modules目录下找webpack包,找不到之后再去全局中找)
安装确定的版本号
npm info webpack 查看webpack的版本信息
npm install webpack@版本号 webpack-cli -D (webpack-cli作用:可以在命令行中使用webpack的命令)


初始化
1 npm init -y
2 npm install webpack webpack-cli --save-dev
3 npx webpack index.js  // 用webpack翻译xx 文件

webpack 中的package.json

"private":true , // 私有
"main":"index.js", // 向外暴露js文件
 "license":'',    //是否开源设置
 "script":{
     "built":"webpack"  // npm run webpack 可以直接打包
 }

webpack的配置

默认配置 webpack.config.js
const path = require('path);
module.exports = {
	mode:'production', // 默认模式  or值为development打包代码不会被压缩
    entry:'相对路径', // 打包入口文件  入口文件不简写情况下{main:'路径'} 
    output:{
        filename:'main.js', // 打包的文件名称 filename:{main:'main.js'}
        path:path.resolve(__dirname,'dist') //打包的文件夹 绝对路径
    }
}

运行 npx webpack 即可打包
打包输出的信息
Hash:本次打包唯一的hash值
version:本次使用的webpack的版本
time:整体打包耗时
asset:打包出来的文件名
size:打包出来文件的大小
chunks: 文件对应的id值,和与打包文件有关的id值
chunk name:对应文件的名字
entrypoint: 入口文件
本次文件打包文件


不是默认文件名的情况下:
不是默认文件 运行 npx webpack --config + 配置文件的名称

package.json

script:{
    "bundle":"webpack"  // 会先在本地node_modules中找包,没有再去全局找
}

webpack默认只能打包处理js文件,打包其他文件需要借助loader

loader的使用 执行顺序 从下到上 从右到左 (作用:完成不同文件的打包)

在配置文件中设置
module:{
    rules:[
        {
            test:/\.jpg$/, // 打包jpg结尾的文件
            use:{
                loader:'url-loader|file-loader', // 需要先安装 npm i file-loader -D
            	options:{
            		name:'[name].[ext]', // 保证打包的名字不变 placeholder占位符
            		outputPath:'images/', // 打包到 dist/images 文件夹中
            		limit:2048,  // 只有url-loader才有此设置
            	}
            }
        }, {
            test:/\.vue$/, //打包vue的文件
            use:{loader:'vue-loader', // 需要先安装 npm i vue-loader -D}
        },{
            test:/\.css$/,
            use:['style-loader','css-loader']
        }
    ]
}

问题一:file-loader底层执行原理:
1 先把文件拷贝到打包文件dist目录下,但是名字变化了
2 给原文件中返回文件路径
问题二: file-loader 和url-loader的区别
url-loader:图片在打包文件中生成一个base64的文件,不会额外生成文件,设置limit的作用是,在大于limit值的时候,会和file-loader一样,小于limit值的话,图片打包在输出文件中

问题三:打包css
style-loader: 把打包文件挂载到head中
css-loader: 分析多个css之间的关系,从而合并成一段css

引入scss文件
需要的loader: ['style-loader','css-loader','scss-loader','postcss-loader']
postcss-loader: 添加厂商前缀
	配置: 文件中 postcss.config.js
		module.export = {
            plugins:[
                require('autoprefixer') ; // 需要安装autoprefixer的插件  npm i autoprefixer -D
            ]
		}
	
	
css-loader中添加 
	option:{
	  importLoader:2, // scss样式中引入的scss,如果不写会直接走css-loader,有的话,则先执行下面的2个loader
	  modules:true, //css模块化,只在引入的文件中起作用 引入方式 @import style from './index.css'
    
	}
	
打包字体图标的loader
{
    test:/\.(eot|ttf|svg)$/,
    use:{
        loader:'file-loader
    }
}

plugins 插件

作用:可以在webpack运行到某个时刻的时候,帮你做一些事情

插件一:
1>安装插件
npm install -D html-webpack-plugin 
// 会在打包结束后,自动生成一个HTML文件,并把打包生成的js自动引入到html中
2>引入插件
let HtmlWebpackPlugin = require('html-webpack-plugin)
3>使用插件
plugins:[new HtmlWebpackPlugin(
	{
        template:'src/index.html' , //创建一个打包模板
	}
)]

插件二:
clean-webpack-plugin 
plugins:[new CleanWebpackPulgin(['dist])]
// 打包前会删除dist下的文件

entry和output的基本配置

entry:'./index.js' ==>entry:{main:'./index.js'}
多入口打包
entry:{
    main:'./index.js',
    sub:'./index.js',
}
output:{
    publicPath:'http://cdn.com.cn', //引入的文件中加上前缀
    filename:'[name].js', //用占位符打包出mian.js和sub.js文件
    path:path.resolve(__dirname,'dist')
}

sourceMap配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值