html loader事件,html-loader

html loader module for webpack

html-loader.svg

html-loader.svg

html-loader.svg

badge.svg

gitter-webpack%2Fwebpack-brightgreen.svg

html5.svg

webpack.svg

HTML Loader

Exports HTML as string. HTML is minimized when the compiler demands.

Install

npm i -D html-loader

Usage

By default every local image.png is required (require('./image.png')). You may need to specify loaders for images in your configuration (recommended file-loader or url-loader).

You can specify which tag-attribute combination should be processed by this loader via the query parameter attrs. Pass an array or a space-separated list of : combinations. (Default: attrs=img:src)

If you use , and lots of them make use of a custom-src attribute, you don't have to specify each combination :: just specify an empty tag like attrs=:custom-src and it will match every element.

{

test: /\.(html)$/,

use: {

loader: 'html-loader',

options: {

attrs: [':data-src']

}

}

}

To completely disable tag-attribute processing (for instance, if you're handling image loading on the client side) you can pass in attrs=false.

Examples

With this configuration:

{

module: {

rules: [

{ test: /\.jpg$/, use: [ "file-loader" ] },

{ test: /\.png$/, use: [ "url-loader?mimetype=image/png" ] }

]

},

output: {

publicPath: "http://cdn.example.com/[hash]/"

}

}

image2x.pngrequire("html-loader!./file.html");

// => 'a992ca.png

// data-src="image2x.png">'require("html-loader?attrs=img:data-src!./file.html");

// => ''require("html-loader?attrs=img:src img:data-src!./file.html");

require("html-loader?attrs[]=img:src&attrs[]=img:data-src!./file.html");

// => 'a992ca.png

// data-src="https://img-blog.csdnimg.cn/2022010703262365826.png" >'require("html-loader?-attrs!./file.html");

// => 'image2x.png'

minimized by running webpack --optimize-minimize

'p

data-src=https://img-blog.csdnimg.cn/2022010703262365826.png>'

or specify the minimize property in the rule's options in your webpack.conf.js

module: {

rules: [{

test: /\.html$/,

use: [ {

loader: 'html-loader',

options: {

minimize: true

}

}],

}]

}

See html-minifier's documentation for more information on the available options.

The enabled rules for minimizing by default are the following ones:

removeComments

removeCommentsFromCDATA

removeCDATASectionsFromCDATA

collapseWhitespace

conservativeCollapse

removeAttributeQuotes

useShortDoctype

keepClosingSlash

minifyJS

minifyCSS

removeScriptTypeAttributes

removeStyleTypeAttributes

The rules can be disabled using the following options in your webpack.conf.js

module: {

rules: [{

test: /\.html$/,

use: [ {

loader: 'html-loader',

options: {

minimize: true,

removeComments: false,

collapseWhitespace: false

}

}],

}]

}

'Root-relative' URLs

For urls that start with a /, the default behavior is to not translate them.

If a root query parameter is set, however, it will be prepended to the url

and then translated.

With the same configuration as above:

image.jpgrequire("html-loader!./file.html");

// => 'image.jpg'require("html-loader?root=.!./file.html");

// => 'a992ca.jpg'

Interpolation

You can use interpolate flag to enable interpolation syntax for ES6 template strings, like so:

require("html-loader?interpolate!./file.html");gallery.png%60)%7D

${require('./components/gallery.html')}

And if you only want to use require in template and any other ${} are not to be translated, you can set interpolate flag to require, like so:

require("html-loader?interpolate=require!./file.ftl");

${list.name}

#list>

gallery.png%60)%7D

${require('./components/gallery.html')}

Export formats

There are different export formats available:

module.exports (default, cjs format). "Hello world" becomes module.exports = "Hello world";

exports.default (when exportAsDefault param is set, es6to5 format). "Hello world" becomes exports.default = "Hello world";

export default (when exportAsEs6Default param is set, es6 format). "Hello world" becomes export default "Hello world";

Advanced options

If you need to pass more advanced options, especially those which cannot be stringified, you can also define an htmlLoader-property on your webpack.config.js:

var path = require('path')

module.exports = {

...

module: {

rules: [

{

test: /\.html$/,

use: [ "html-loader" ]

}

]

},

htmlLoader: {

ignoreCustomFragments: [/\{\{.*?}}/],

root: path.resolve(__dirname, 'assets'),

attrs: ['img:src', 'link:href']

}

};

If you need to define two different loader configs, you can also change the config's property name via html-loader?config=otherHtmlLoaderConfig:

module.exports = {

...

module: {

rules: [

{

test: /\.html$/,

use: [ "html-loader?config=otherHtmlLoaderConfig" ]

}

]

},

otherHtmlLoaderConfig: {

...

}

};

Export into HTML files

A very common scenario is exporting the HTML into their own .html file, to

serve them directly instead of injecting with javascript. This can be achieved

with a combination of 3 loaders:

The html-loader will parse the URLs, require the images and everything you

expect. The extract loader will parse the javascript back into a proper html

file, ensuring images are required and point to proper path, and the file loader

will write the .html file for you. Example:

{

test: /\.html$/,

use: [ 'file-loader?name=[path][name].[ext]!extract-loader!html-loader' ]

}

Maintainers

HomePage

Repository

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值