我正在使用 Laravel 5.4 和 Laravel Mix 来输出 SASS 文件。
在我的字体定义中,我正在配置它们,以便在输出 CSS 时它将指向文件,public/assets/fnt/font-name/filename.ext
但处理器会更改输出,以便它改为指向public/fonts/filename.ext
. 有没有办法阻止它改变输出路径?
默认情况下它会做这样的事情对我来说毫无意义。
编辑
我已经看到他们在 Mix 中使用的默认值是罪魁祸首:
module.exports.module = {
rules: [
// ...
{
test: /\.(woff2?|ttf|eot|svg|otf)$/,
loader: 'file-loader',
options: {
name: 'fonts/[name].[ext]?[hash]',
publicPath: '/'
}
}
]
};
我尝试过使用null-loader
而不是,file-loader
但它导致它失败,因为它找不到node_modules
最初不应该在其中查找的文件。
删除有问题的规则会导致尝试打开和评估有问题的字体文件时出现大量错误:
error in ./public/assets/fnt/fanfare-jf/fanfare-jf.ttf
Module parse failed: DIRECTORY\public\assets\fnt\fanfare-jf\fanfare-jf.ttf Unexpected character '' (1:0)
You may need an appropriate loader to handle this file type.
(Source code omitted for this binary file)
@ ./~/css-loader!./~/postcss-loader!./~/resolve-url-loader!./~/sass-loader?sourceMap&precision=8!./resources/assets/sass/app.scss 6:2525-2590
@ ./resources/assets/sass/app.scss
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
我至少可以添加emitFiles: false
以options
防止它复制文件,但路径仍在更改中。