webpack part1

1.配置文件的入口与出口

w4默认 入口文件 src index.js

    默认输出 dist main.js

自定义入口和出口

const path = require('path')
module.exports = {
    entry: {
        path: path.join(__dirname, './src/index.js')//绝对路径
    },
    output: {
        path:  path.join(__dirname, './dist'),//__dirname当前文件所处的目录
        filename: 'bundle.js' //输出文件名字
}
}

2.自动打包功能

每次修改代码都需要执行打包太麻烦

//自动打包的工具
npm i webpack-dev-server -D

然后修改script下面的dev

webpack-dev-server

修改引用路径 /bundle.js

因为这个工具会把打包生成的文件 放在根目录 且看不见

3.生成预览页面

npm i html-webpack-plugin -D
const htmlWebpackPlugin = require('html-webpack-plugin')
const htmlPlugin = new htmlWebpackPlugin({
    template: './src/index.html',//指定要用到的模板
    filename: 'index.html' //指定生成文件名称。存在内存中 不显示
})
module.exports = {
    plugins:[htmlPlugin] //webpack打包期间会用到的插件
}

上面是写到配置文件中

4.自动打包打开网页

package.json中配置

"dev": "webpack-dev-server --open --host 127.0.0.1 --port 8000"
// open 打包完成后自动打开页面
// host 配置ip地址

5.加载器

5.1 通过 loader 打包非js模块

webpack默认只打包后缀js文件

loader协助webpack打包模块

5.2加载器使用

处理css文件

npm i style-loader css-loader -D

webpack.config文件中配置

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

5.3打包处理less文件(可以嵌套表示)

npm i less-loader less -D
module: {
        rules: [
{test: /\.css$/, use:['style-loader', 'css-loader']}  
{test: /\.css$/, use:['style-loader', 'css-loader','less-loader']} ] }

6.配置postCSS 自动添加css兼容前缀(浏览器厂商)

npm i postcss-loader autoprefixer -D

创建一个文件 postcss 的配置文件 postcss.config.js

const autoprefixe = require('autoprefixe') //导入插件
module.exports
= { plugins: [autoprefixe] //挂载插件
}

然后webpack.config.js中 rules 修改css的loader规则

npm i less-loader less -D
module: {
        rules: [
{test: /\.css$/, use:['style-loader', 'css-loader', 'postcss-loader']}  
{test: /\.css$/, use:['style-loader', 'css-loader','less-loader']} ] }

7.打包样式表中的图片和文字字体

npm i url-loader file-loader -D
npm i less-loader less -D
module: {
        rules: [
{test: /\.css$/, use:['style-loader', 'css-loader', 'postcss-loader']}  
{test: /\.css$/, use:['style-loader', 'css-loader','less-loader']} ] 
{test: /\.jpg/png/gif/bmg/ttf/eot/svg/woff/woff2$/, 
use: 'url-loader?limit=16940'} ] }}//?表示要传参 指定图片大小 单位byte  只有小于limit指定值 才会被转base64图片 大于等于不会转
npm i less-loader less -D
module: {
        rules: [
{test: /\.css$/, use:['style-loader', 'css-loader', 'postcss-loader']}  
{test: /\.css$/, use:['style-loader', 'css-loader','less-loader']} ] 
{test: /\.jpg/png/gif/bmg/ttf/eot/svg/woff/woff2$/, 
use: 'url-loader?limit=16940'} ] }}//?表示要传参 指定图片大小 单位byte  只有小于limit指定值 才会被转base64图片 大于等于不会转

8.打包js中的高级语法

例如 class

bable转换器相关的包

npm i babel-loader  @babel/core @babel/runtime   -D

安装bable语法插件相关的包

npm i  @babel/preset-env @bable/plugin-transform-runtime @babel/pligin-proposal-class-properties -D

然后根目录创建 babel配置文件 babel.config.js

module.exports = {
    presets: [@babel/preset-env] 
plugins:[
@bable/plugin-transform-runtime, @babel/pligin-proposal-class-properties] //webpack打包期间会用到的插件 }

然后webpack.config

module: {
        rules: [
{test: /\.css$/, use:['style-loader', 'css-loader', 'postcss-loader']},
{test: /\.css$/, use:['style-loader', 'css-loader','less-loader']},
{test: /\.jpg/png/gif/bmg/ttf/eot/svg/woff/woff2$/, 
use: 'url-loader?limit=16940'} ,
{test: /\.js$/, use:['babel-loader'], exclude:/node_modules/}
] }

猜你喜欢

转载自www.cnblogs.com/-constructor/p/12617240.html