webpack从入门到会玩(4)- 其他资源

概述

前端项目中出了html、js、css、图片等资源之外,还会有其他的资源,比如视频、iconfont等。这些资源一般不需要webpack怎么处理,直接输出到指定的目录就可以了。

下面就用iconfont来举个例子吧,新建一个media-demo项目,然后去阿里巴巴的iconfont.cn下载一些图标,放到项目里,图标文件放到media目录,css文件放到styles目路,css文件里面读取图标资源的路径记得改一下,index.js中引用iconfont.css,在index.html中添加图标引用,webpack.config.js作一些基本的配置。

在这里插入图片描述

iconfont.css(具体根据自己下载的css为准,只是读取资源的路径要按照目录结构改好):

@font-face {font-family: "iconfont";
  src: url('../media/iconfont.eot?t=1598185565749'); /* IE9 */
  src: url('../media/iconfont.eot?t=1598185565749#iefix') format('embedded-opentype'), /* IE6-IE8 */
  url('../media/iconfont.woff?t=1598185565749') format('woff'),
  url('../media/iconfont.ttf?t=1598185565749') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
  url('../media/iconfont.svg?t=1598185565749#iconfont') format('svg'); /* iOS 4.1- */
}

.iconfont {
  font-family: "iconfont" !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.icon-icon-test:before {
  content: "\e633";
}

.icon-icon-test1:before {
  content: "\e63a";
}

.icon-icon-test2:before {
  content: "\e640";
}

.icon-icon-test3:before {
  content: "\e644";
}

index.js:

import '../styles/iconfont.css'

console.log('入口模块被加载')

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>webpack</title>
</head>
<body>
    <i class="iconfont icon-icon-test"></i>
    <i class="iconfont icon-icon-test1"></i>
    <i class="iconfont icon-icon-test2"></i>
    <i class="iconfont icon-icon-test3"></i>
</body>
</html>

webpack.config.js:

const {resolve} = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
    entry: './js/index.js',
    output: {
        path: resolve(__dirname, 'build'),
        filename: 'build.js'
    },
    module: {
        rules: [
            // 处理css资源
            {
                test: /\.css$/,
                use: [
                    {
                        loader: MiniCssExtractPlugin.loader,
                        options: {
                            publicPath: '../'
                        }
                    },
                    'css-loader'
                ]
            },
            // 处理图片资源
            {
                test: /\.(jpg|png|gif|svg)$/,
                loader: 'url-loader'
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './index.html'
        }),
        new MiniCssExtractPlugin({
            filename: 'styles/build.css'
        })
    ],
    mode: 'development'
}

由于需要处理iconfont.css和svg图片,所以还需要css处理相关的loader和url-loader。
相关依赖记得下载好哦!

安装loader

处理其他起源需要用到file-loader,按道理使用了url-loader就应该会安装好file-loader的,不过这里还是给出安装命令。

npm i file-loader -D

配置loader

在webpack.config.js中配置file-loader。

webpack.config.js:

const {resolve} = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
    entry: './js/index.js',
    output: {
        path: resolve(__dirname, 'build'),
        filename: 'build.js'
    },
    module: {
        rules: [
            // 处理css资源
            {
                test: /\.css$/,
                use: [
                    {
                        loader: MiniCssExtractPlugin.loader,
                        options: {
                            publicPath: '../'
                        }
                    },
                    'css-loader'
                ]
            },
            // 处理图片资源
            {
                test: /\.(jpg|png|gif|svg)$/,
                loader: 'url-loader'
            },
            // 处理其他资源
            {
                // 排除参数
                exclude: /\.(html|js|css|less|jpg|png|gif|svg)$/,
                loader: 'file-loader',
                options: {
                    outputPath: 'media',
                    name: '[hash:10].[ext]'
                }
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './index.html'
        }),
        new MiniCssExtractPlugin({
            filename: 'styles/build.css'
        })
    ],
    mode: 'development'
}

file-loader的配置用到了排除参数exclude,就是出了正则表达式匹配到的资源以外的资源,都使用file-loader来处理。

使用webpack命令构建项目。

webpack

构建完成后的build目录中,可以看到iconfont资源。

在这里插入图片描述
svg被作为图片资源处理,以base64的格式构建到build.css中了。

在这里插入图片描述

用浏览器访问index.html可以看到效果。

在这里插入图片描述

其他资源就这样处理好啦,是不是很简单,喜欢的小伙伴点一个赞吧!谢谢啦~

下一篇讲解js处理中的语法检查功能,敬请期待!

webpack从入门到会玩(5)- js语法检查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值