• webpack笔记(二)


    开发模式介绍

    在开发模式下,我们主要做两件事

    1. 编译代码,使浏览器能够解析

    2. 代码质量检查,树立代码规范

    处理CSS资源

    在我们的资源中如果存在css资源,webpack就需要引入相应loader对其处理,在控制台窗口下,输入npm install css-loader style-loader --save下载必要的两个loader。

    在webpack.config.js中,在module属性下写入如下代码

    1. module: {
    2. //loader配置
    3. rules: [
    4. {
    5. //匹配以.css结尾的文件
    6. test: /\.css$/,
    7. //加载loader配置时,会从下到上,从右到左进行加载
    8. use: [
    9. "style-loader", //动态创建一个style标签添加到html中,将js中的css加载到标签内
    10. "css-loader", //将css资源编译成commonjs的模块到js中
    11. ],
    12. },
    13. ],
    14. },

            控制台再次输入npx webpack,即可成功编译。在后续的视频教程中,使用less,sass等也是一样的方法配置在rules中。后面有一节讲处理图片资源,实际上webpack5可以处理图片资源因为其内置了file-loader与url-loader,如果想要再优化一点,就是把一些文件大小较小的图片转换成base64直接作为本地图片,这样就不用从服务器上请求了。

    修改输出目录

            如果是要改主输出文件的路径,可以在webpack.config.js中这样修改:

    1. //输出
    2. output: {
    3. //输出路径要求绝对路径
    4. //__dirname表示当前文件夹目录
    5. path: path.resolve(__dirname, "dist"),
    6. filename: "/static/js/main.js",
    7. },

            如果是要改其他资源的输出文件路径,比如说,修改图片文件的路径为/static/images/下,那么可以这么做:

    1. rules: [
    2. ...
    3. {
    4. test:/\.jpeg/,
    5. generator:{
    6. //name表示源文件的文件名,ext表示文件扩展名
    7. filename:"static/images/[name][ext]"
    8. }
    9. }
    10. ],

    自动清空上次打包内容

            在output配置项中加入一项:clean:true

    处理字体图标和其他资源

             与打包图片资源类似,其配置如下

    1. rules: [
    2. ...
    3. {
    4. test:/\.(ttf|woff2?|wav|mp3|mp4)$/,
    5. //asset的话会把较小资源转换base64,加resource的话则是原封不动输出
    6. type:"asset/resource"
    7. generator:{
    8. //name表示源文件的文件名,ext表示文件扩展名
    9. filename:"static/media/[name][ext]"
    10. }
    11. }
    12. ],

    ESLint介绍

            eslint是可组装的javascript和jsx代码检查工具。它是用来检查js和jsx语法的工具。

    配置文件

            配置文件有很多种写法,主要分两种:

            1. .eslintrc.*。新建文件,放置在项目根目录下。你可以用不同的描述语言去写配置,如.eslintrc,.eslintrc.js,.eslintrc.json

            2. 在package.json中添加eslintConfig配置项,这样就不用创建新文件了

    具体配置

            这里我们以.eslingrc.js为例进行具体配置

    1. module.exports = {
    2. //解析选项
    3. parserOptions:{
    4. ecmaVersion:6, //es语法版本
    5. sourceType:"module", //es模块化
    6. ecmaFeatures:{
    7. jsx:false //如果是react项目这里要写true
    8. }
    9. },
    10. //具体检查规则
    11. //注意,自己配的规则和继承来的规则,如果存在同一规则,自己配的会覆盖掉继承规则
    12. rules:{
    13. semi:"warn", //使用分号的话会警告
    14. 'array-callback-return':"warn", //强制数组方法的回调函数中有return
    15. //...
    16. },
    17. //继承其他规则(开发中自己一点点写规则是很费劲的,因此可以直接继承别人已经写好的规则来用,
    18. //注意,如果是第三方规则需要自行下载,如果是官方规则则不需要下载,)
    19. extends:[
    20. "plugin:vue/essential"
    21. ]
    22. //其他规则详见:eslint.bootcss.com/docs/user-guide/configuring
    23. }

     rules具体规则:

    • "off"或0  关闭规则
    • "warn"或1  开启规则,使用警告级别的错误,不会导致程序退出
    • "error"或2  开启规则,使用错误级别的错误,会导致程序退出

    写完eslintrc.js后代码检查不会立即生效,需要在webpack配置中进行配置

    在webpack中配置eslint

            在webpack4中eslint作为一个Loader使用,但在webpack5中eslint作为一个plugin使用。

           在webpack官方文档中找到eslint相关内容,此小节可略过

            先安装两个插件:eslint和eslint-webpack-plugin

            在webpack.config.js中修改plugins配置项:

    1. plugins: [new ESLintPlugin({
    2. context:path.resolve(__dirname,"src") //哪些文件要做检查
    3. })],

            在项目根目录下创建.eslintrc.js文件,写入eslint规则。

  • 相关阅读:
    Realtek SDK缓冲区溢出和命令执行漏洞说明
    Ubuntu 18.04/20.04 CV环境配置(下)--手势识别TRTpose+Kinect DK人体骨骼识别
    mkv无损转换成mp4,方法步骤
    linux中的input设备(转)
    养生产品如何进行线上推广?产品线上推广的渠道有哪些?
    Day3-渐渐明白[链表]的边界
    Jetty
    WIN7用上最新版Chrome
    彻底搞懂cookie、session和token
    Python基础 – 使用别人代码的模块机制
  • 原文地址:https://blog.csdn.net/hlz_12345/article/details/126121093