zoukankan      html  css  js  c++  java
  • 复习webpack的常用loader

    今天复习了下webpack的常用loaders,其实习惯ES6开发的话,webpack的config.js基础配置应该是比较固定:

    首先是JS,我们ES6要转为ES5,需要用到babel转码:

    1.

    npm install --save-dev babel-loader babel-core

    2.在config.js中配置:

    1 module: {
    2   rules: [
    3     { test: /.js$/, exclude: /node_modules/, loader: "babel-loader" }
    4   ]
    5 }

    3.配置babel的preset:

    npm install babel-preset-env --save-dev

    4.项目目录下创建.babelrc文件,内容为:

    1 {
    2   "presets": ["env"]
    3 }

    5.当我们需要用到promise、map或ES6数组方法的时候,还要下载polyfill:

    npm install --save babel-polyfill

    6.使用polifill时候,要在entry中引入:

    module.exports = {
      entry: ["babel-polyfill", "./app/js"]
    };

    其次是css方面的loaders:

    1.

    npm i css-loader style-loader --save-dev

    2.如果想使用预处理器比如sass:

    npm i sass-loader node-sass --save-dev

    *node-sass最近几个版本安装可能会报错,我今天就遇到,github也有网友反映了这问题(见上篇)

    *使用sass要先安装ruby,然后命令行gem sass (这不影响我们在项目的webpack中使用sass)

    3.postcss-loader是必须的,除非你想每个新的css3样式都查前缀:

    npm i postcss-loader autoprefixer --save-dev

    使用postcss的时候,文档推荐创建本地postcss-config.js配置文件,这样在webpack.config.js中在需要postcss-loader的时候直接调用就好了:

    1 module.exports = {
    2   plugins: [
    3     require('autoprefixer')
    4   ]
    5 }

    然后是文件方面的,帮我们处理图片等:

    npm i file-loader url-loader --save-dev

     在webpack上处理图片的时候,难免会因为路径问题困惑。

    我们知道项目中引用图片有以下几种情景:

    1.html的<img src=' ' >

    2.css中背景图片引用

    3.js中动态创建/生成img

    4.行内样式中设置background-image

    在webpack使用file-loader对图片打包时:

    1.用html-withimg-loader配合htmlWebpackPlugin(见下边代码蓝色部分)

    2.css的路径会自动替换

    3.js中引用图片的src时,要用require()

    最后配置的config文件是:

     1 var HtmlWebpackPlugin = require('html-webpack-plugin');
     2 const path=require('path');
     3 module.exports={
     4     entry:['babel-polyfill','./src/js/a.js'],
     5     output:{
     6         path:path.resolve(__dirname,'dist'),
     7         filename:'[name].js',
     8     publicPath:'/assets/'
     9     },
    10     module: {
    11       rules: [
    12       { test: /.js$/, exclude: /node_modules/, loader: "babel-loader" },
    13 
    14       {test:/.css$/,use:['style-loader','css-loader','postcss-loader']},
    15 
    16       {test:/.scss$/,
    17           use:['style-loader',
    18           {loader:'css-loader',options:{importLoaders:2}},
    19           'postcss-loader','sass-loader']
    20       },
    21       //url
    22       {
    23         test: /.(png|jpg|gif)$/,
    24         use: [
    25           {
    26             loader: 'url-loader',
    27             options: {
    28               limit: 8192,
    29               name:'[name].[ext]'
    30             }  
    31           }
    32         ]
    33       },
    34       {
    35         test: /.(png|jpg|gif)$/,
    36         use: [
    37           {
    38             loader: 'file-loader',
    39             options: {
    40               name: 'img/[name].[ext]'
    41       }  
    42           }
    43         ]
    44       },
    45        {
    46         test: /.(htm|html)$/,
    47         loader: 'html-withimg-loader'
    48     }
    49       
    50     ]
    51 },
    52 plugins:[
    53 new HtmlWebpackPlugin({
    54         template: 'html-withimg-loader!' + path.resolve(__dirname, 'index.html'),
    55         filename: 'main.html'
    56     })
    57 ],
    58 devServer: {
    59     contentBase:__dirname, //浏览器cwd
    60     historyApiFallback: true,//不跳转
    61     inline: true//实时刷新
    62   }
    63 
    64 }
  • 相关阅读:
    [USACO 5.5]Hidden Password
    [Codeforces 1016F]Road Projects
    再会,OI
    [TJOI 2018]智力竞赛
    [POI 2009]Lyz
    [NOI 2015]品酒大会
    [NOI 2017]蔬菜
    [NOI 2017]整数
    [NOI 2017]游戏
    [NOI 2017]蚯蚓排队
  • 原文地址:https://www.cnblogs.com/alan2kat/p/7611099.html
Copyright © 2011-2022 走看看