Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >6、webpack从0到1-less、sass、postcss

6、webpack从0到1-less、sass、postcss

作者头像
Ewall
发布于 2020-03-20 04:14:16
发布于 2020-03-20 04:14:16
1.1K00
代码可运行
举报
文章被收录于专栏:vue学习vue学习
运行总次数:0
代码可运行

还是延续上节的内容,webpack如何处理less、sass这种预编译样式文件。 本节的内容主要是postcss的运用,postcss很强大,我们小试牛刀用它来实现在不同的浏览器中为我们自动添加前缀如-webkit--moz-等等以做兼容。 git仓库:webpack-demo

1、处理sass

  • 继续沿用上一章的代码放置新建文件夹chapter6下。
  • 首先,我们需要安装处理sass文件相关的loader->webpack之sass-loader
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cd chapter6
$ npm install sass-loader node-sass --save-dev
  • 然后我们需要在webpack.config.js中配置它。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
  module: {
    rules: [
      // 处理sass
      {
        test: /\.s[ac]ss$/i,
        use: [
          "style-loader",
          "css-loader",
          "sass-loader" // 将 Sass 编译成 CSS,默认使用 Node Sass
        ]
      },
    ]
  }
...

2、新建

  • 进入到项目中在src/styles下新建content.scss文件,用来测试。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 webpack-demo/chapter6
  ...
  |- /src
    |- /assets
    |- /styles
       |- header.css
+      |- content.scss
    |- logo.js
    |- header.js
    |- content.js
    |- footer.js
    |- index.js
    |- header.css
  |- index.html
  |- package.json
  |- webpack.config.js
  ...  
  • content.js中随便输入几行`sass语法:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
body {
  .content {
    background: green;
  }
}
  • src/content.js中给这个块级元素添加一个.content类名。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export function createContent() {
   const div = document.createElement("div");
   div.innerText = "主体内容";
+  div.classList.add("content");
   document.body.appendChild(div);
}
  • src/index.js模块中引入这个content.scss文件。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { createLogo } from "./logo";
import { createHeader } from "./header";
import { createContent } from "./content";
import { createFooter } from "./footer";

import "./styles/header.css";
+ import "./styles/content.scss";

createLogo();
createHeader();
createContent();
createFooter();
  • 然后我们npm run build打包后再打开dist/index.html就可以看到内容块的新增的绿色背景样式了。这样就证明我们的sass处理打包就成功了。

3、处理less

  • 过程与上同理,在src/styles目录下新建用来测试的相关footer.less文件并在src/index.js中引入它用来测试看效果,就不浪费篇幅了,具体可以看仓库代码。
  • 安装并配置less-loader,然后打包刷新浏览器就可以看到效果了。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ npm install less less-loader --save-dev
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
  module: {
    rules: [
      ...
      // 处理less
      {
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"]
      },
      ...
    ]
  }
...

4、安装postcss

  • 现在我们有这么一个常见的需求场景,比如说当我们使用css3新特性的时候,我们需要根据不同的浏览器自动加上浏览器前缀如-webkit--moz-等等以做兼容。怎么处理?先动手用一下,后面再来小结,先安装postcss:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ npm i postcss-loader --save-dev
  • 然后我们还需要安装能给我们css3自动添加浏览器前缀的插件autoprefixer
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ npm install autoprefixer --save-dev
  • src/styles/content.scss中写点css3语法用来测试。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.header {
   background: green;
+  box-shadow: 0 0 20px green;
}

4、配置postcss

  • chapter6目录下新建一个postcss.config.js文件并配置添加这个刚刚安装的autoprefixer插件。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 webpack-demo/chapter6
  ...
  |- /src
  |- index.html
  |- package.json
+ |- postcss.config.js
  |- webpack.config.js
  ...  
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+  module.exports = {
+    plugins: {
+      "autoprefixer": {}
+    }
+  };
  • webpack.config.js中配置这个post-loader。我这里以应用scss文件为例,其它样式文件也是一样的配置,详见源码。(这个loader放置的位置顺序要注意一下)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
  module: {
    rules: [
      // 处理sass
      {
        test: /\.s[ac]ss$/i,
        use: [
          "style-loader",
          "css-loader",
+         "postcss-loader", // 因为这里处理的是css文件,所以要放在sass-loader的上面
          "sass-loader"
        ]
      },
    ]
  }
...
  • 到了这一步,基本配置就完成了,但是还有一个东西一定要记得设置,不然压根没效果。进入到package.json中,我们要设置所支持的浏览器列表,切记!!!(这一步很重要,我就是忘记设置这一步,导致一直没效果,找了很久的问题!!!)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
...
+  "browserslist": [
+    "> 1%",
+    "last 2 versions"
+  ]
...
}
  • 然后我们输入命令打包,在浏览器中打开dist/index.html就可以看到自动为我们添加好了前缀了。

4、小结

  • Ok,小结一下,对于lesssass的处理很简单,不过是上一节处理css文件的一个延伸罢了,不多说,主要说下postcss
  • 对于postcss这个怎么用的你应该亲自实践过了,并且有了一个基本的认识。
  • 首先我想说,你可以把postcss也理解为一个??生态吧,就像是webpack可以有很多的loader来给它赋能babel也有许多插件来给它赋能
  • postcss也同样有许多来给它赋能(官网上就列举了许多),如上面我们用到的autoprefixer插件,另外还有我们一般用postcss-px-to-viewport插件来实现使用vw实现移动端适配移动端适配等等,

参考链接: postcss-loader webpack css-loader

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【前端技术】Webpack基础
Webpack 是一个打包模块化 JavaScript 的工具,在 Webpack 里一切文件皆模块,通过 Loader 转换文件,通过 Plugin 注入钩子,最后输出由多个模块组合成的文件。Webpack 专注于构建模块化项目。其官网的首页图很形象的画出了 Webpack 是什么,如下:
演化计算与人工智能
2022/01/24
7640
【前端技术】Webpack基础
webpack4 入门
源码地址 https://github.com/lilugirl/learn-webpack4/tree/master/3
lilugirl
2019/10/08
5490
webpack 入门教程
本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。
老马
2018/08/20
4K0
webpack 入门教程
3-3 使用loader打包静态资源(样式篇上)
在制作网页时,我们必不可少地会使用css。那么webpack是如何打包css文件的呢?
love丁酥酥
2019/06/17
9282
3-3 使用loader打包静态资源(样式篇上)
webpack 学习笔记系列04-资源处理优化
TypeScript 约定了 tsconfig.json 文件来存储项目配置,文档链接。
CS逍遥剑仙
2021/02/21
1.8K0
webpack4配置学习(一)
webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。
小周sir
2019/09/23
5950
webpack4配置学习(一)
PostCSS 初识
今天在吃早饭的时候就被同事@,说有一块页面效果在测试服务器的部署效果跟本地不一样:代码在本地运行没有问题,部署后发现有一个分割线的位置明显不对。来到公司后看了同事的演示,觉得可能是 css 代码压缩时出现了问题。
李振
2021/11/26
5120
PostCSS 初识
webpack postcss
JavaScript转换样式的工具。让css样式适配不同的浏览器(不用自己去手动的添加了)。
用户4793865
2023/01/12
3580
webpack postcss
5、webpack从0到1-处理css文件
讲下webpack如何处理css样式文件。 git仓库:webpack-demo 1、新建 进入项目中,在src目录下新建一个styles/header.css文件。 webpack-demo/chapter5 ... |- /src |- /assets |- content.js |- footer.js |- header.js |- index.js |- logo.js + |- header.css |- index.ht
Ewall
2020/03/20
8020
webpack 简单配置
1.webpack 是一个现代JavaScript 应用程序的静态打包器,它能够把各种资源,例如JS,样式,图片   等都作为模块来使用处理,将许多松散的模块按照依赖和规则打包成符合生产部署的前端资源,   还可以将按需加载的模块进行代码分割,等到实际需要的时候再异步加载。 2.安装   前提条件,请确保安装了Node.js的最新版。   进入相应的文件夹     首先执行 进入相应的文件夹 npm init 初始化     然后可以全局安装 npm install webpack --save-dev  
用户1197315
2018/01/22
8860
webpack 简单配置
webpack打包原理入门探究(七)其他文件处理
这个 file-loader 是处理 css样式中的 图片地址,index.html的图片地址相对路径没有问题,但是如果处理 组件中的 图片的相对路径是会有一些问题,需要借助 require()
公众号---人生代码
2020/06/11
5380
webpack打包原理入门探究(五)css-loader初探
在 src/app.js 引入 src/styles/css/common.css
公众号---人生代码
2020/06/11
5670
09_Webpack打包工具
Webpack打包工具对项目中的复杂文件进行打包处理,可以实现项目的自动化构建,并且给前端开发人员带来了极大的便利。
张哥编程
2024/12/13
1170
09_Webpack打包工具
webpack打包原理入门探究(六)less|sass-loader初探
在 src/app.js 引入 src/styles/less/common.less
公众号---人生代码
2020/06/11
9630
使用Webpack快速配置编写HTML基础环境
前言 由于项目需要构建个webpack打包坏境: 目前用到技术栈:Pug + SASS + Webpack + browser JavaScript使用ES6编写编译ES5即可。 package.json直接写入: { "name": "My_Project", "version": "0.0.1", "scripts": { "serve": "webpack-dev-server", "build": "webpack --config webpack.config.prod
用户1203875
2018/06/19
8820
Webpack4 搭建 Vue 项目
由于 Parcel 打包工具的影响,webpack4 也追求零配置搭建项目。而前阵子出现的 vue-cli 3.0也是基于 webpack4 零配置的思想创建的。对于一些习惯webpack3 的开发者难免有些不习惯。本文就带你绕过 vue-cli,用 webpack4 一步步搭建 vue 项目。
小皮咖
2019/11/05
1.1K0
走近webpack(4)--css相关拓展
  我们前面已经学了很多webpack基本的处理情况,一句话总结就是,一个优秀的webpack项目,主要的核心用法就是整合loader和plugin去处理你想要的任何需求。   下面,咱们一起来学学如何用webpack来处理less,sass等预编译器。先看看如何用webpack处理less。   国际惯例,第一步是安装: npm install less less-loader --save-dev   第二步,配置loader项: { test: /\.less$/, use: [{
zaking
2018/05/02
1.1K0
webpack工程化
⼤家⼀开始使⽤ npm 安装依赖包时,肯定感受过那挤⽛膏般的下载速度,上⽹⼀查只需要将 npm 源设 置为淘宝镜像源就⾏,在控制台执⾏⼀下以下命令: npm config set registry https://registry.npm.taobao.org
刘嘿哈
2022/10/25
3810
大作!webpack详细配置
注意:在一个模块中,只允许使用export default向外默认暴露一次成员,不能写多个export default,否则会报错
小丞同学
2021/08/16
1.7K0
【Webpack】319- Webpack4 入门手册(共 18 章)(上)
最近和部门老大,一起在研究团队【EFT - 前端新手村】的建设,目的在于:帮助新人快速了解和融入公司团队,帮助零基础新人学习和入门前端开发并且达到公司业务开发水平。
pingan8787
2019/08/20
1.8K0
【Webpack】319- Webpack4 入门手册(共 18 章)(上)
相关推荐
【前端技术】Webpack基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档