03- webpack : loader
/** loader: 1.代码转换,预处理文件。比如 Typescript -> javascript; 图片 -> data URL 2.在一组use配置的loader数组中,loader从右到左,从下到上执行 3.loader 从模块路径加载(node-modules中),也可以是本地文件作为自定义loader 4.loader 导出一个函数,并且编写为 Node.js 兼容的 JavaScript 5.loader 必须有返回值,返回值是string或者buffer 6.loader在webpack中给我们提供了很多的API 特性: 1、loader 支持链式调用。链中的最后一个 loader,返回 webpack 所期望的 JavaScript。 2、loader 可以是同步的,也可以是异步的。 3、loader 运行在 Node.js 中。 4、loader 可以通过 options 对象配置(仍然支持使用 query 参数来设置选项,但是这种方式已被废弃)。 5、除了常见的通过 package.json 的 main 来将一个 npm 模块导出为 loader,还可以在 module.rules 中使用 loader 字段直接引用一个模块。 6、插件(plugin)可以为 loader 带来更多特性。 7、loader 能够产生额外的任意文件。 cssLoader执行顺序: 1、sass-loader|less-loader -> css-loader -> style-loader 2、css-loader中将样式序列化,就是转换为string类型 3、style-loader就是将样式添加到头部标签中的style标签中 自定义loader: const { getOptions } = require('loader-utils'); module.exports = function(socue){ console.log(socue);//* 当前的这个值就是index.js中的内容 const options = getOptions(this); //* getOptions用于获取配置,中loader下的options中的参数 /** * * 我们将index.js中的console.log('aaa')中的aaa进行替换为配置项中的参数name */ const con = socue.match(/console\.log\(['"](.*)['"]\)/); return socue.replace(con[1],options.name); } **/ // .ts -> js .css 使用 css-loader module.exports = { module: { rules: [ { test: /\.css$/, use: 'css-loader' }, { test: /\.ts$/, use: 'ts-loader' }, ], }, }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)