loaders是应用在你app中的某些源文件的转换器,它们是一些函数(运行在node.js上),可以将资源文件的源文件依据参数转化为
新的源文件。
例如,你可以使用loaders告诉webpack去加载(转换)CoffeeScript或者JSX。
• loaders可以是链式的。它们使用管道的方式应用于资源。期待最后一个loader返回JavaScript;其他的loader可以返回任意的资源
格式,然后传递给下一个loader。
• 支持同步和异步。
• 运行在node.js中,并且可以做所有可能做的事。
• 接受查询参数,所以我们可以向loader传递配置信息。
• 在配置文件中loaders可以被绑定到扩展名(原文是extensions,感觉不太通顺)或者正则表达式。
• 可以通过npm进行发布和安装。
• 标准模块可以通过package.json
loader向标准main输出loader。
•可以访问(access)配置。
•插件可以赋予loaders更多的特性。
•可以发出更多额外的任意文件。
•等等
如果你对更多的loader例子感兴趣,请走传送门http://webpack.github.io/docs/list-of-loaders.html
npm install xxx-loader --save
npm install xxx-loader --save-dev
require("./loader!./dir/file.txt");
//=>在当前文件夹中使用“loader.js”文件对dir文件夹中的“file.txt”文件进行转换
require("jade!./template.jade");
//=>使用"jade-loader" (通过npm安装到了"node_modules"文件夹中)对文件"template.jade"
// 进行转换。如果配置文件中有一些转化也绑定到了这个文件,那么他们也将被应用。
require("!style!css!less!bootstrap/less/bootstrap.less");
//=>在"bootstrap"模块(通过GitHub安装到了"node_modules"文件夹中)中的less"文件
// 夹中的"bootstrap.less"文件将被"less-loader"转换。这个结果将会被"css-loader"
// 转换,然后再被"style-loader"转换。如果配置文件中有一些转化也绑定到了这个文件,
// 那么他们也将被应用。
{
module: {
loaders: [
{ test: /\.jade$/, loader: "jade" },
// => "jade" loader is used for ".jade" files
{ test: /\.css$/, loader: "style!css" },
// => "style" and "css" loader is used for ".css" files
// Alternative syntax:
{ test: /\.css$/, loaders: ["style", "css"] },
]
}
}
webpack --module-bind jade --module-bind 'css=style!css'
url-loader?
mimetype=image/png。
?
key=value&key2=value2
)以及JSON对象(?{"key":"value","key2":"value2"}
)。
require("url-loader?mimetype=image/png!./file.png");
{ test: /\.png$/, loader: "url-loader?mimetype=image/png" }
{
test: /\.png$/,
loader: "url-loader",
query: { mimetype: "image/png" }
}
webpack --module-bind "png=url-loader?mimetype=image/png"