我正在使用Parcel将SCSS打包到使用postCSS。
我的postCSS配置只有自动前缀和顺风。
我的scss文件包含以下内容:
@font-face {
font-family: NBE;
src: url('../fonts/NBE-Regular.eot');
src: url('../fonts/NBE-Regular.eot#iefix') format('embedded-opentype'),
url('../fonts/NBE-Regular.woff2') format('woff2'),
url('../fonts/NBE-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
}
但它输出
@font-face {
font-family: NBE;
src: url("/NBE-Regular.f90b15ca.eot");
src: url("/NBE-Regular.f90b15ca.eot#iefix") format("embedded-opentype"),
url("/NBE-Regular.6b2ab3ea.woff2") format("woff2"),
url("/NBE-Regular.2ec20d61.woff") format("woff");
font-weight: normal;
font-style: normal;
}
注意url()下的位置,因此得到字体文件的404。
我不知道这个哈希或者版本是什么
为什么它会这样改变URL呢?
更新:我注意到所有这些文件都被复制到dist文件夹,但该文件夹不是根,所以URL仍然是错误的。
1条答案
按热度按时间sg24os4d1#
这是一个老问题,你可能已经解决了它,我也遇到过类似的情况,我的解决方法如下。
阻止宗地处理某些链接的文件
parcel-resolver-ignore插件允许您指定处理时忽略的文件或文件路径的模式。您可以针对特定的文件,也可以针对其他文件中引用的文件,这使得跳过处理sass / css文件中的某些文件模式成为可能。这可以防止复制链接的文件以及随之而来的url重写。
1.安装插件并创建
.parcelrc
配置文件(或扩展现有配置文件),如package readme中所述。1.然后将
parcelIgnore
块添加到package.json
文件,如下所示。sass/css文件中引用的/fonts和/img文件夹中的任何文件都将被跳过。构建脚本不会抛出“未找到”错误,文件不会复制到dist文件夹,url仍保持为您最初在sass文件中指定的url。
复制静态资产而不进行处理
如果需要将静态资源复制到dist文件夹中,可以使用parcel-reporter-static-files-copy插件,它允许您指定静态文件的源文件夹(根据需要在子文件夹中),这些静态文件无需任何处理即可复制到dist文件夹中。
1.安装插件并创建
.parcelrc
配置文件(或扩展现有配置文件),如package readme中所述。1.在源文件夹中创建一个
static
目录,并将资源放置在其中。如果要使用自己的文件夹名称,请向package.json
文件添加一个staticFiles
块,如下所示,指定要复制的文件夹,并可选地指定要将资源复制到的dist文件夹的子目录。您的构建过程现在将跨所有静态资产无更改地复制到您的dist文件夹。