走近webpack(4)–css相关拓展

我们前面已经学了很多webpack基本的处理情况,一句话总结就是,一个优秀的webpack项目,主要的核心用法就是整合loader和plugin去处理你想要的任何需求。下面,咱们一起来学学如何用we

大家好,又见面了,我是你们的朋友全栈君。

  我们前面已经学了很多webpack基本的处理情况,一句话总结就是,一个优秀的webpack项目,主要的核心用法就是整合loader和plugin去处理你想要的任何需求。

  下面,咱们一起来学学如何用webpack来处理less,sass等预编译器。先看看如何用webpack处理less。

  国际惯例,第一步是安装:

npm install less less-loader --save-dev

  第二步,配置loader项:

{
    test: /\.less$/,
    use: [{
           loader: "style-loader" 
      },{
          loader: "css-loader"
      },{
          loader: "less-loader" 
      }]
}

  最后,咱们来写一个less试试,直接在src/css/目录下,新建一个pink.less文件并写一些代码:

@base :pink;
#lessDiv{
    width:300px;
    height:300px;
    background-color:@base;
}

  还要在src/index.html中加入一个id名为#lessDiv的div,最重要的一点,不要忘了在src/entry.js中引入pink.less,引入的方法跟引入css文件是一样的。

  不知道大家还记不记的咱们在处理css文件的时候做过一件事情,也就是把css从js中分离出来,因为webpack打包是把css打包进js的,所以我们修改一下loader的配置方式,跟前面的css是一样的,这里不再赘述,直接上代码:

{
  test: /\.less$/,
  use: extractTextPlugin.extract({
        use: [{
            loader: "css-loader"
        }, {
            loader: "less-loader"
        }],
        fallback: "style-loader"
    })
  }

  你可以试试,这两种代码打包之后会有什么样的区别,OK,我们npm run server一下,会发现页面中已经出现了一个粉色的盒子。

  那么说完了less,继续说一下sass。仍旧是安装,配置。。。不多说,直接上代码:

npm install node-sass --save-dev
npm install sass-loader --save-dev
/*如果安装报错,可以试一下cnpm或者分开单独安装*/

  配置loader:

{
  test: /\.scss$/,
  use: [{
      loader: "style-loader" // creates style nodes from JS strings
  }, {
      loader: "css-loader" // translates CSS into CommonJS
  }, {
      loader: "sass-loader" // compiles Sass to CSS
  }]
}

  跟less一样编写一个scss文件写入sass代码并且在entry.js中引入,别忘了在index.html中写个div:

// css/blue.scss
$color: blue;
#sassDiv {
  $width: 100%;
  width: $width;
  height:200px;
  background-color: $color;
}
// index.html加入
<div id="sassDiv"></div>
//entry.js中引入
import sass from './css/blue.scss';

  同样的,把sass从js中分离,修改loader配置:

{
     test: /\.scss$/,
     use: extractTextPlugin.extract({
        use: [{
           loader: "css-loader"
         }, {
           loader: "sass-loader"
         }],
          fallback: "style-loader"
         })
 }

  npm run server后发现蓝色的div已经出现。其实大家可以自己去试着写一下sass的配置。因为跟less甚至之前的css几乎是一摸一样的。没有什么大的区别。那么下面咱们一起看看css3属性自动加上前缀,极大的方便我们的开发。

  自动加前缀,我们需要用到postCss和autoprefixer,那么安装一下吧:

npm install --save-dev postcss-loader autoprefixer

  我们新建一个postcss.config.js,与webpack.config.js同级,并且写入相关代码,也就是引入autoprefixer:

module.exports = {
    plugins: [
        require('autoprefixer')
    ]
}

  然后把我们之前写过的css-loader的配置修改一下:

{
  test: /\.css$/,
  use: [
        {
          loader: "style-loader"
        }, {
          loader: "css-loader",
          options: {
             modules: true
          }
        }, {
          loader: "postcss-loader"
        }
  ]
}

  分离:

{
    test: /\.css$/,
    use: extractTextPlugin.extract({
        fallback: 'style-loader',
        use: [
            { loader: 'css-loader', options: { importLoaders: 1 } },
            'postcss-loader'
        ]
    })
    
}

  那么,我们随便在index.css中加上点css3的样式试试吧。至此,当你npm run build 之后多半会发现既不报错,但是index.css中也没有加上相应的前缀。那么你需要在package.json中写入如下配置:

"browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]

  什么意思呢?也就是全球浏览器使用率大于1%,最新的两个版本并且是ie8以上的浏览器。还有更多的参数可以查看这里https://github.com/ai/browserslist#queries。

  增加了这个配置之后,再打包就完全没问题啦。

  那么我们下面学习一下如何消除未使用的css,在实际项目中,我们可能会引入很多样式库,组件库,或者随着项目需求的增加,我们可能会添加一些新的css,而以前的css又不知道有没有用,也不敢去动,害怕牵一发而动全身。所以我们可以使用一个插件,在打包的时候自动去除未使用的css样式:

/*PurifyCSS-webpack要依赖于purify-css这个包,所以这两个都安装一下,-D是--save-dev的简写,i是install的简写*/
npm i -D purifycss-webpack purify-css

  然后我们引入glod和purifycss-webpack插件:

const glob = require('glob');
const PurifyCSSPlugin = require("purifycss-webpack");
/*引入插件就不多说了,glob是node的一个对象,我们需要在检查html模板以确定是否用到了css的时候用到glob*/

  然后,在plugins里这样配置:

new PurifyCSSPlugin({
    paths: glob.sync(path.join(__dirname, 'src/*.html')),
})
/*glob.sync同步获取指定文件夹下的文件,这里的意思就是获取src下的所有html文件。有关node的知识不在这里多说,有兴趣的大家可以自行去学习*/

  配置成功,我们在src/index.css中写点没用的代码试试吧。发现打包后的css中并没有我们新加的没用的代码,成功!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124437.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker重启后镜像消失_u盘安装iso原版镜像

    docker重启后镜像消失_u盘安装iso原版镜像一、问题引入根据镜像启动容器,执行命令如下:dockerrun–namemycentos-dcentos,通过dockerps查看正在运行中容器,缺找不到mycentos容器。再次通过dockerps-a查看发现,mycentos容器已经处于停止状态了。二、原因Docker容器后台运行,就必须有一个前台进程.容器运行的命令如果不是那些一直挂起的命令(eg.运行…

    2022年9月22日
  • mongodb 集合_mongodb原理

    mongodb 集合_mongodb原理最近公司用MongoDB,整合一下网上的优缺点,学习下MongoDB没有找到原作者一:MongoDB的优点和缺点优点面向文档存储(类JSON数据模式简单而强大) 动态查询 全索引支持,扩展到内部对象和内嵌数组 查询记录分析 快速,就地更新 高效存储二进制大对象(比如照片和视频) 复制和故障切换支持 Auto-Sh…

    2022年10月30日
  • pycharm 导包_PyCharm入门教程——自动导入(上)

    pycharm 导包_PyCharm入门教程——自动导入(上)当你引用还没有导入的类时,PyCharm会帮助你找到此文件并将其添加到导入列表中。你可以导入单个类或整个包,具体取决于你如何设置。import语句将添加到imports部分,但插入符号不会从当前位置移动,并且你当前的编辑会话不会挂起。此功能称为ImportAssistant(导入助手)。使用ImportAssistant是处理PyCharm中导入的首选方法,因为命令行不支持导入优化。此功…

    2022年8月25日
  • 服务器对cpu的性能要求比较高_服务器cpu家用缺点

    服务器对cpu的性能要求比较高_服务器cpu家用缺点如今各种大型游戏对我们的电脑性能的要求越来越高,很多用了三四年的老电脑已经带不动最新的3A巨作了,这时候大家就需要考虑更换电脑或者是升级配置了。假如选择升级配置,效果最显著的就要数更换CPU和显卡了,今天编者就来谈谈由于种种原因,性价比很低几款CPU,假如大家想要更换以下的几款CPU可要三思了。首先,编者不推荐买英特尔的第六、七代酷睿处理器,以i57500为例,散片价格在1200元左右,与同为四…

    2022年9月19日
  • 企业微信打开页面提示“请在微信客户端打开链接”

    企业微信打开页面提示“请在微信客户端打开链接”企业微信不支持打开需要带微信身份的链接。包括几种情况:访问链接为oauth2链接,appid填写为公众号appid。这种情况,建议开发者更换链接,或者将原公众号服务迁移到企业微信服务。 公众平台发布的文章,点击“阅读原文”。这种只能在微信客户端才能访问。官网链接:https://work.weixin.qq.com/api/doc/90001/90148/90457#%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%89%93%E5%BC%80%E9%A1%B5%.

    2022年6月3日
  • ArrayList扩容详解

    ArrayList扩容详解本文探讨一下ArrayList的扩容过程ArrayList底层是数组elementData,用于存放插入的数据。初始大小是0,当有数据插入时,默认大小DEFAULT_CAPACITY=10。如果在创建ArrayList时指定了initialCapacity,则初始大小是ArrayList1.验证扩容的代码示例从示例中可以看到,当添加元素时,如果元素个数+1>当前数组长度【size+1>elementData.length】时,进行扩容,扩容后的数组大小是:oldC.

    2022年6月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号