webpack:css-loader和style-loader关系

测试

当我们webpack 的 rules 啥都没配置的时候

js 复制代码
const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'index.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {
    rules: [
    ]
  }
};

我们在 js 中导入了 css,发现报错,因为 webpack 打包模块的时候只认识 js,并不知道什么是 css,所以需要 loader 出场了。

接下来我们配置 css-loader

js 复制代码
rules: [
  {
    test:/\.css$/,
    use:['css-loader']
  }
]

发现正常打包了

这时在 dist 的 index.js 中也能看到打包的 css 代码,但是打开页面文字并没有变红。

因为 css-loader 只管打包,不管挂载,那么我们再加上 style-loader

js 复制代码
rules: [
  {
    test:/\.css$/,
    use:['style-loader','css-loader']
  }
]

打包后刷新页面发现变红了,并且 css 挂载了 style 里

总结

  • css-loader:使 webpack 可以识别 import 'xx.css' 并打包成 webpack 标准模块
  • style-loader:使用<style>将css-loader内部样式注入到我们的HTML页面,所以一般不单独使用,要依赖 css-loader 解析后的模块

所以一般 less、scss 要加上三个 loader

js 复制代码
{
  test:/\.less$/,
  use:['style-loader','css-loader','less-loader']
}
相关推荐
胡萝卜术4 小时前
从API调用到手写LRU:力扣146「LRU缓存」的哈希表+双向链表终极进化之路
前端·javascript·面试
科技道人4 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
天疆说4 小时前
Zotero Connector 在 Edge 里找不到桌面 Zotero(Linux / Zotero 9.0.6 / Edge 150)
linux·前端·edge
李伟_Li慢慢6 小时前
02-从硬件说起WebGL
前端·three.js
kyriewen7 小时前
看了微软几万人用AI编程的数据——效率涨24%的代价没人提
前端·ai编程·claude
2601_963771377 小时前
How to Scale Your WordPress Store Traffic in 2026
前端·php·plugin
亿元程序员7 小时前
老板说我的3D箭头游戏用来做试玩太普通了,没人想玩,让我变点花样...
前端
李伟_Li慢慢7 小时前
01-threejs架构原理-课程简介
前端·three.js
_瑞9 小时前
深入理解 iOS 渲染原理
前端·ios
IT_陈寒9 小时前
SpringBoot自动配置失灵?你可能忘了这个关键注解
前端·人工智能·后端