webpack基础理解

本文介绍了webpack的基础知识,包括如何通过npm初始化项目,使用webpack将模块化语法打包成浏览器可识别的JS,以及配置webpack的入口、输出、加载器和插件。此外,还详细讲解了CSS和图片资源的处理,并探讨了ESLint的配置,用于代码风格和规则检查。
摘要由CSDN通过智能技术生成

webpack基础理解

webpack就是将不同格式的文件打包成浏览器能够执行识别的文件

首先创建一些文件
在这里插入图片描述

npm init -y 初始化文件 生成一个配置文件package.json

  • 这里如果直接打开静态文件引入main 他会提示你import引入这种模块化语法有问题浏览器并不能直接识别,这时就需要我们通过webpack打包成浏览器识别的js语法
    npm i webpack webpack-cli -D//安装webpack包
    npx webpack ./src/main.js --mode=development//开发环境
    npx webpack ./src/main.js --mode=production//生产环境
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
webpack配置

接下来就是对webpack文件的配置
入口entry
输出output
加载器loader
插件plugins
模式mode (开发development,生产production)

在webpack根目录加上webpack.config.js 写法固定不变

const path = require('path')//nodejs核心模块,专门用来处理路径问题
module.exports = {
    //入口
    entry: './src/main.js',//相对路径
    //出口
    output: {
        //__dirname nodejs变量,代表当前文件夹目录,当前文件侠士config.js 目录就是最外层的demo
        path: path.resolve(__dirname, 'dist'),//绝对路径
        //文件名
        filename: 'static/index.js',
        clean:true//每次打包清空之前
    },
    //加载器
    module: {
        //规则
        // loader的配置
        rules: [
            
        ]

    },
    //插件
    plugins: [],
    //模式
    mode: "development"
}

loader配置官方文档
这里文档有个通病就是
在这里插入图片描述
这里只让我们下载css-loader 而配置文件却是
{ test: /\.css$/i, use: ["style-loader", "css-loader"], },
这时候会报错在这里插入图片描述
说我们style-loader没有找到

正确的是同时也要下载style-loader 必坑,use可以使用多个loader数组形式,而loader只能写一个loader

下面主要讲解loader配置

 //加载器
    module: {
        //规则
        // loader的配置
        rules: [
            {
                test: /\.css$/i,
                use: ["style-loader", "css-loader"],
            },
            //图片性能优化小于10kb进行base64转换,优点减少请求数量,缺点体积变大
            {
                test: /\.(png|jpe?g|gif|webp|svg)$/,//图片配置 如果是视频或者字体资源直接在这里改就行了
                type: 'asset',//设置资源 type:‘asset/resource’原封不动输出
                generator: {
                      filename: "static/image/[hash:10][ext][query]",//打包文件名hash唯一值hash:10哈希值前10位,ext后缀 query其他参数
                },
                parser: {
                    dataUrlCondition: {
                        // 小于10kb会转换base64,
                        maxSize: 10 * 1024 
                    }
                }
            }
        ]

    },
深入配置文件ESLint

由于以上配置仅对模块化语法进行编译对于箭头函数等等一系列还没有自己解析的规则,因此我们需要进行配置来对jsx等等进行编译
配置文件写法有很多

  • .eslintrc.*
  • .eslintrc
  • .eslintrc.js
  • .eslintrc.json
  • 区别在于配置格式写法不一样,我们常用js来用

还有一种写法就是直接在package.json中的eslintConfig中写,这样就不需要创建文件,在原有文件基础上写ESLint会自动查找并读取他们,所以以上方式存在一个即可

//以.eslintrc.js配置文件为例
module.exports={
	//解析选项
	perserOptions:{
		ecmaVersion:6,//ES语法版本
		sourceType:"module",//ES模块化
		ecmaFeatures:{//Es其他特性
			jsx:true//如果是React项目,就需要开启jsx语法
		}
	},
	//具体检查规则
	rules:{},
	//继承其他规则
	extends:[]
}

eslint官方文档

rules具体规则
  • "off"或0 -关闭规则
  • "warn"或1 -开启规则,警告级别错误warn不会导致程序退出
  • "error"或2 -开启规则,错误级别错误error触发时程序会退出

demo

rules:{
	semi:"error",//禁止使用分号
	'array-callbac-return':"warn",//强制数组方法的回调函数有return语句否则警告
	'default-case':[
		'warn',//要求swutch语句中有default分支否则警告
		{commentPattern:'^no default$'}//允许在最后注释 no default, 就不会有警告了
	],
	eqeqeq:[
		'warn',//强制使用=== 和!==否则警告
		'smart'//除了少数情况下不会警告
	]	
}
extends 继承

开发自己写rules规则太费经了,所以最好的方式就是继承现有的规则
常用的的规则

  • Eslint官方规则 eslint:recommended
  • vue Cli:plugin:vue/essential
  • react Cli:react-app
//demo
module.exports={
	//继承eslint规则
	extends:["eslint:recommended"],
	env:{
		node:true,//启用node中全局变量
		browser:true,//启用浏览器中全局变量
	},
	parserOptions:{
		ecmaVersion:6,//es6中语法
		sourceType:"module",
	}
	rules:{
		//在这里写的规则会自动覆盖继承的规则
		"no-var":2,//不能使用var定义变量
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菜鸟学代码··

给打赏的我会单独一对一讲解

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值