三天看懂Webpack-03

94 阅读1分钟

这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战

使用webpack打包css文件

  1. 运行cnpm i style-loader css-loader --save-dev
  2. 修改webpack.config.js这个配置文件:
module: { // 用来配置第三方loader模块的
        rules: [ // 文件的匹配规则
            { test: /.css$/, use: ['style-loader', 'css-loader'] }//处理css文件的规则
        ]
    }
  1. 注意:use表示使用哪些模块来处理test所匹配到的文件;use中相关loader模块的调用顺序是从后向前调用的;

使用webpack打包less文件

  1. 运行cnpm i less-loader less -D
  2. 修改webpack.config.js这个配置文件:
{ test: /.less$/, use: ['style-loader', 'css-loader', 'less-loader'] },

使用webpack打包sass文件

  1. 运行cnpm i sass-loader node-sass --save-dev
  2. webpack.config.js中添加处理sass文件的loader模块:
{ test: /.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }

使用webpack处理css中的路径

  1. 运行cnpm i url-loader file-loader --save-dev
  2. webpack.config.js中添加处理url路径的loader模块:
{ test: /.(png|jpg|gif)$/, use: 'url-loader' }
  1. 可以通过limit指定进行base64编码的图片大小;只有小于指定字节(byte)的图片才会进行base64编码:
{ test: /.(png|jpg|gif)$/, use: 'url-loader?limit=43960&name=[hash:8]-[name].[ext]' },
limit :指定大小
hash:添加hash值,防止重名
name:原名显示
ext:原后缀
加载字体:
{test:/.(ttf|eot|svg|woff|woff2)$/,use:'url-loader'}

使用babel处理高级JS语法

老版本babel

  1. 运行cnpm i babel-core babel-loader babel-plugin-transform-runtime --save-dev安装babel的相关loader包
  2. 运行cnpm i babel-preset-es2015/env babel-preset-stage-0 --save-dev安装babel转换的语法
  3. webpack.config.js中添加相关loader模块,其中需要注意的是,一定要把node_modules文件夹添加到排除项:
{ test: /.js$/, use: 'babel-loader', exclude: /node_modules/ }      
exclude:排除
  1. 在项目根目录中添加.babelrc文件,并修改这个配置文件如下:
json格式文件:
{
    "presets":["es2015/env", "stage-0"],
    "plugins":["transform-runtime"]
}
  1. 注意:语法插件babel-preset-es2015可以更新为babel-preset-env,它包含了所有的ES相关的语法;

新版本babel

安装最新babel依赖

babel 8.x
//.babelrc
{
  "presets": [
    "@babel/preset-env"
  ],
  "plugins": [
    "@babel/plugin-transform-runtime"
  ]
}

打包到单独的文件夹中

js
output: {
    //在输出文件名之前添加文件路径,如下
    filename: 'js/webpack02.[name].js',
        path: path.resolve(__dirname, 'dist')
},
img:
{
    test: /.(png|jpg|gif)$/,
    //outputPath:指定输出路径
    use: 'url-loader?limit=182777&outputPath=images&name=[hash:8]-[name].[ext]'
},
​
css
MiniCssExtractPlugin  :地址 https://www.npmjs.com/package/mini-css-extract-plugin
使用:
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
plugins: [
    new MiniCssExtractPlugin({
        filename: 'css/[name].css',
    })
],
​
    rules: [{
        test: /.css$/,
        // use: ['style-loader', 'css-loader']
        // use: [MiniCssExtractPlugin.loader, "css-loader"]
        use: [{
            loader:MiniCssExtractPlugin.loader,
            options:{
                publicPath:'../'
            }
        }, "css-loader"]
    }]

相关文章

babel-preset-env:你需要的唯一Babel插件
Runtime transform 运行时编译es6