file-loader
安装
npm install --save-dev file-loader
用法
默认情况下,生成的文件的文件名就是文件内容的 MD5 哈希值并会保留所引用资源的原始扩展名。
var url = require("file-loader!./file.png");
// => 输出 file.png 文件到输出目录并返回public url
// => 即返回 "/public-path/0dcbbaa701328a3c262cfd45869e351f.png"
默认情况下,文件会被输出,不过如果需要的话,也可以不输出(比如使用了服务端的 packages)。
var url = require("file-loader?emitFile=false!./file.png");
// => 返回public url 但是不输出文件
// => 即返回 "/public-path/0dcbbaa701328a3c262cfd45869e351f.png"
文件名模板
你可以使用查询参数 name
为你的文件配置自定义的文件名模板。例如,从你的 context
目录复制文件到输出目录,并且保留完整的目录结构,你可以使用 ?name=[path][name].[ext]
。
默认情况下,会按照你指定的路径和文件名输出文件,且使用相同的 URL 路径来访问文件。
你可以使用 outputPath
, publicPath
和 publicPath
查询名称参数,来指定自定义的输出路径和发布目录。
use: "file-loader?name=[name].[ext]&publicPath=assets/foo/&outputPath=app/images/"
useRelativePath
should be true
if you wish to generate relative URL to the each file context
{
loader: 'file-loader',
query: {
useRelativePath: process.env.NODE_ENV === "production"
}
}
文件名模板占位符
[ext]
资源扩展名[name]
资源的基本名称[path]
资源相对于context
查询参数或者配置的路径[hash]
内容的哈希值,默认为十六进制编码的md5
[<hashType>:hash:<digestType>:<length>]
可选配置- 其他的
hashType
, 即sha1
,md5
,sha256
,sha512
- 其他的
digestType
, 即hex
,base26
,base32
,base36
,base49
,base52
,base58
,base62
,base64
length
字符的长度
- 其他的
[N]
当前文件名按照查询参数regExp
匹配后获得到第 N 个匹配结果示例
require("file-loader?name=js/[hash].script.[ext]!./javascript.js");
// => js/0dcbbaa701328a3c262cfd45869e351f.script.js
require("file-loader?name=html-[hash:6].html!./page.html");
// => html-109fa8.html
require("file-loader?name=[hash]!./flash.txt");
// => c31e9820c001c9c4a86bce33ce43b679
require("file-loader?name=[sha512:hash:base64:7].[ext]!./image.png");
// => gdyb21L.png
// 使用 sha512 哈希值替代 md5 并且使用 7 个字符 的 base64
require("file-loader?name=img-[sha512:hash:base64:7].[ext]!./image.jpg");
// => img-VqzT5ZC.jpg
// 使用自定义名称,sha512 哈希值替代 md5 并且使用 base64 的 7 个字符
require("file-loader?name=picture.png!./myself.png");
// => picture.png
require("file-loader?name=[path][name].[ext]?[hash]!./dir/file.png")
// => dir/file.png?e43b20c069c4a01867c31e98cbce33c9
贡献
不要犹豫去创建一个pull request。所有的贡献行为都会被感谢。开发时,可以使用 npm test
来进行测试。
维护人员
Tobias Koppers |
Kees Kluskens |
Mo Bitar |