美文网首页
2020-11-24使用 Loader 打包静态资源(样式篇 -

2020-11-24使用 Loader 打包静态资源(样式篇 -

作者: 夏天的风2020 | 来源:发表于2020-11-24 14:25 被阅读0次
 使用loader打包静态资源(样式篇--上)
      //--插入img
      //npm run bundle运行报错,webpack不知道该怎么处理css这种文件,
      //webpack只知道怎么处理js文件,
      //不知道引入css文件的时候,要干什么,

      //所以打包index.js中的import './index.css'中的时候就会报错了,
      //到webpack.config.js中去配置,
      module.exports = {
        module: {
          rules: [
            {
              test: /\.(jpg|png|gif)$/,
              use:{
                loader:'url-loader',
                options:{
                  name:'[name]_[hash].[ext]', 
                  outputPath:'images/',
                  limit:2048                  
                }
              }
            },
            {
              test: /\.css$/,
              use:['style-loader','css-loader'] 
            }
          ]
        }
      }

      //webpack打包遇到css文件的时候,使用相应的loader,
      //完成相应的打包,
      //打包css文件的时候,一般用到两个loader,
      //use不能使用一个对象了,use使用数组,

      npm install style-loader css-loader -D

  打包流程:
        index.js中引入一个css文件,import './index.css'
        正常来说webpack不知道怎么打包css,
        在webpack.config.js中做了配置,webpack看到css文件
        会用css-loader和style-loader帮我们打包,
        打包好了之后我们的js里面就有了样式相关的内容,


  use:['style-loader','css-loader'] 对应的css-loader和style-loader的作用是什么?
     1. css-loader会帮我们分析出几个css文件之间的关系,最终把这些css文件合并成一段css,
     2. style-loader在得到css-loader生成的css内容之后,style-loader会把这段内容
        挂载到页面的header部分,
     3.打开控制台查看,
      //--img插入

      在处理css文件打包的时候,我们一定要用css-loader配合style-loader
      一起来使用,


1.png 2.png
  有时在代码中不写css,而是写scss或者less或者styles这种样式文件,
  index.js去引入index.scss这个文件,
  //---img插入

      //npm run bundle运行不成功
      //index.js引入.scss结尾的文件,webpack不知道该怎么办?
      //修改webpack.config.js中的配置
      module.exports = {
        module: {
          rules: [
            {
              test: /\.(jpg|png|gif)$/,
              use:{
                loader:'url-loader',
                options:{
                  name:'[name]_[hash].[ext]', 
                  outputPath:'images/',
                  limit:2048                  
                }
              }
            },
            {
              test: /\.scss$/,
              use:[
                'style-loader',
                'css-loader',
                'scss-loader',
                'postcss-loader'
                ] 
            }
          ]
        }
      }
      当遇到scss文件,就用css-loader打包,之后再用style-loader做处理,
      打包成功,样式不起作用,
      打开控制台,查看header,
      这根本不是css语法,这是原始的scss语法,
      浏览器当然不能识别,

      //所以说当我们去打包scss文件的时候,还需要去借助其它额外的loader,
      //帮助我们把scss语法翻译成css语法,
      使用scss-loader,帮助我们做scss文件的编译,(webpack官方文档)
      npm insatll sass-loader node-sass --save-dev

      //在webpack的配置里面,loader是有先后顺序的,
      //从下到上,从右到左

      所以当我们去打包一个scss文件的时候,
      首先会执行一个scss-loader,对scss代码进行一个翻译,翻译成css之后,
      给到css-loader,都处理好之后,
      再给到style-loader,挂载到页面上,


3.png

 在index.scss中,
      body{
       .avatar{
           width:100px;
           height:100px;
           transform:translate(100px,100px);
         }
       }
      //npm run bundle 运行
      //控制台查看,
      //transform未添加前缀-webpick-

      //我们有其它loader帮助我们实现自动添加厂商前缀的功能,
      //postcss-loader
      //npm i -D postcss-loader

      //1.postcss-loader要求我们在目录下创建postcss.config.js文件,
      //在这里面我们可以做一些配置,
      // module.exports = {
      //   parser: 'sugarss',
      //   plugins: {
      //     'postcss-import': {},
      //     'postcss-cssnext': {},
      //     'cssnano': {}
      //   }
      // }
      module.exports = {
        plugins: [
          require('autoprefixer') //这样我们就配置好了postcss要使用的一个插件
        ]
      }
      安装autoprefixer插件
      npm install autoprefixer -D
      //---img插入


      webpack.config.js中我们配置了当我们发现scss文件的时候,
      我们会一次使用postcss-loader,scss-loader,css-loader和style-loader
      然后postcss-loader它有一个配置文件--postcss.config.js,
      当它被引用或者打包的时候,要使用postcss-loader的时候,
      它会去使用autoprefixer的插件,
      做好了webpack的配置后,
      index.scss文件中也有了transform:translate(100px,100px)
      index.js中也引用了import './index.scss'文件
      //---img插入(2)
      //npm run bundle打包运行
      //---img插入
      控制台查看界面,
      transform上自动多了个-webkit-这样一个厂商前缀,
      这就是postcss里面对应的autoprefixer这个插件帮我们添加的厂商前缀,



      //打包样式文件的时候,如何调用postcss这个loader帮我们
      //去处理一些增加厂商前缀的这样一些需求


5.png 6.png 7.png

相关文章

网友评论

      本文标题:2020-11-24使用 Loader 打包静态资源(样式篇 -

      本文链接:https://www.haomeiwen.com/subject/gppiiktx.html