webpack之管理资源

本文详细介绍了如何使用webpack管理各种资源,包括加载CSS、图片和字体。通过安装和配置style-loader、css-loader、url-loader和file-loader,实现了CSS的内联、图片的处理以及字体文件的引用。在CSS中,可以通过@font-face规则导入字体,而在JavaScript和CSS中都可以方便地引用处理后的图片和字体资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

npm 5,你可能还会在目录中看到一个 package-lock.json 文件

1. 加载css

为了从js模块中import一个css文件,首先,你需要在module配置中安装并添加style-loader和css-loader:

npm install --save-dev style-loader css-loader

第二步:在webpack.config.js中添加module
webpack.config.js

const path = require('path');
module.exports = {
 entry: './src/index.js',
 output: {
  filename: 'bundle.js',
  path: path.resolve(__dirname,'dist')
 },
+ module:{
+  rules: [
+  {
+    test: /\.css$/,
+    use:[
+     'style-loader',
+    'css-loader'
+    ]
+   }
  ]
 }
}

第三步:在js文件当中引入css

import './style.css';

webpack根据正则表达式,确定要查找哪些文件,并将其提供给指定的loader。当该模块运行时,css样式将以style标签的形式插入到HTML的中
这里写图片描述

2.加载图片

使用file-loader将背景和图标这些内容混合到css中。

npm install --save-dev file-loader

在webpack.config.js中添加配置

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  module:{
    rules:[
      {
        test: /\.css$/,
        use:[
          'style-loader',
          'css-loader'
        ]
      },
      {//添加的配置
        test: /\.(png|svg|jpg|gif)$/,
        use: [
          'file-loader'
        ]
      }
    ]

  }

};

将图片添加到js文件中,并在js文件中使用图片或者在css文件中直接引用
js文件中:

import icon from './assets/123.png'

   //将图片添加到现有的div
    var myIcon=new Image();
    myIcon.src= Icon;
    element.appendChild(myIcon);

css文件中:

.hello{
 background: url('./123.png');
}

这里写图片描述
得到的图片的src如上面的图,src的值变得复杂了,这说明webpack找到了该文件并处理过它。
压缩和优化图像可以看image-webpack-loaderurl-loader

3.加载字体

file-loaderurl-loader可以接收并加载任何文件,然后将其输出到构建目录。
第一步:引入字体:
webpack-demo
|- package.json
|- webpack.config.js
|- /dist
|- bundle.js
|- index.html
|- /src
+ |- my-font.woff
+ |- my-font.woff2
|- icon.png
|- style.css
|- index.js
|- /node_modules
第二步:配置
“`
const path = require(‘path’);

module.exports = {
entry: ‘./src/index.js’,
output: {
filename: ‘bundle.js’,
path: path.resolve(__dirname, ‘dist’)
},
module:{
rules:[
{
test: /.css/,  
        use:[  
          ‘style-loader’,  
          ‘css-loader’  
        ]  
      },  
      {  
        test: /.(png|svg|jpg|gif)
/,          use:[            ‘style-loader’,            ‘css-loader’          ]        },        {          test: /.(png|svg|jpg|gif)
/,
use: [
‘file-loader’
]
},
{
test: /.(woff|woff2|eot|ttf|otf)$/,
use: [
‘file-loader’
]
}
]

}

};

第三步:
loader配置好,字体也准备好了,使用`@font-face`来合并它们。

@font-face{
font-family:’MyFont’;
src: url(‘./my-font.woff2’) format(‘woff2’),
url(‘./my-font.woff’) format(‘woff’);
font-weight:600;
font-style:normal;
}

.hello{
color: red;
font-family:’MyFont’;//添加字体
background: url(./123.png”);
}
``
webpack使用本地
url(…)`指令来引入字体,就像引入image时一样。

4.加载字体

类似于node,webpack对JSON的支持是内置的。import Data from './data.json'默认正常运行。导入CSV,TSV,和XML,可以用csv-loaderxml-loader

npm install --save-dev csv-loader xml-loader

在配置文件webpack.config.js中,添加module配置如下

   {
        test: /\.(csv|tsv)$/,
        use:[
          'csv-loader'
        ]
      },
      {
        test:/\.xml$/,
        use:[
          'xml-loader'
        ]
      }

现在,可以在js文件中引用了

import Data from './data.xml'

function getData(){
 console.log(Data);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值