javascript - ¿Cómo configurar el directorio de salida del archivo de fuente desde font-awesome-webpack en el paquete web?
webpack font awesome 5 (8)
Acabo de instalar font-awesome-webpack. Lo importo usando: require("font-awesome-webpack");
La configuración de mi paquete web incluye lo siguiente en mi matriz de cargadores de módulos:
{ test: //.woff(2)?(/?v=[0-9]/.[0-9]/.[0-9])?$/, loader: "url-loader?limit=10000&minetype=application/font-woff" },
{ test: //.(ttf|eot|svg)(/?v=[0-9]/.[0-9]/.[0-9])?$/, loader: "file-loader" }
El problema es que estoy obteniendo este error en la consola de desarrollador:
localhost/:1 GET http://localhost/mysite/app/db812d8a70a4e88e888744c1c9a27e89.woff2
localhost/:1 GET http://localhost/mysite/app/a35720c2fed2c7f043bc7e4ffb45e073.woff
localhost/:1 GET http://localhost/mysite/app/a3de2170e4e9df77161ea5d3f31b2668.ttf 404 (Not Found)
El problema es que esos archivos se crean en la raíz (dentro del directorio de mysite). ¿Cómo configuro para que esos woffs y ttf se envíen dentro del directorio de mysite / app?
A partir de febrero de 2016, esta parece ser una pregunta común con el paquete web, así que espero que esto brinde alguna ayuda. Si agrega esto al cargador: ''&name=./path/[hash].[ext]''
, eso especifica dónde buscar esos archivos. Por ejemplo:
{
test: //.woff(2)?(/?v=[0-9]/.[0-9]/.[0-9])?$/,
loader: ''url-loader?limit=10000&mimetype=application/font-woff&name=./[hash].[ext]''
}
Esto coloca la URL correcta a las fuentes dentro del archivo CSS generado.
Recomiendo este método cuando se trata de algo que no sea css / scss. Espero que esto ayude.
Además de las respuestas anteriores, II tuvo que especificar una ruta de salida para que funcione de manera tal que especifique la ubicación alojada y no escriba los recursos en la ruta raíz:
output: {
filename: "./bundle.js",
path: “./client”
},
module: {
loaders[
{
test: //.woff(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=./webpack-assets/[name]/[hash].[ext]"
}, {
test: //.woff2(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=./webpack-assets/[name]/[hash].[ext]"
}, {
test: //.ttf(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=application/octet-stream&name=./webpack-assets/[name]/[hash].[ext]"
}, {
test: //.eot(/?v=/d+/./d+/./d+)?$/,
loader: "file?&name=./webpack-assets/[name]/[hash].[ext]"
}, {
test: //.svg(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=image/svg+xml&name=./webpack-assets/[name]/[hash].[ext]"
}
] // loaders
} // module
Este es mi caso, porque la ruta de mi script es la siguiente:
script(src=''/javascripts/app.js'')
Entonces, tengo que agregar ''& name. / Javascripts / [hash]. [Ext]'' a todos los archivos de fuentes como:
{
test: //.woff(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=./javascripts/[hash].[ext]"
}, {
test: //.woff2(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=./javascripts/[hash].[ext]"
}, {
test: //.ttf(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=application/octet-stream&name=./javascripts/[hash].[ext]"
}, {
test: //.eot(/?v=/d+/./d+/./d+)?$/,
loader: "file?name=./javascripts/[hash].[ext]"
}, {
test: //.svg(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=image/svg+xml&name=./javascripts/[hash].[ext]"
}
Mismo problema enfrentado.
Se solucionó usando la sintaxis siguiente,
loader: "file?name=./fonts/[hash].[ext]"
fuentes es el nombre del directorio, reemplácelo con su propio nombre de directorio.
Ejemplo:
{
test: //.woff(2)?(/?v=[0-9]/.[0-9]/.[0-9])?$/,
loader: "url?name=/build/[hash].[ext]&limit=8192&mimetype=application/font-woff"
}
Recientemente, he querido usar font awesome con webpack v1, he instalado el módulo npm font-awesome
not font-awesome-webpack
Debe instalar algunos cargadores antes de:
npm i css-loader file-loader style-loader url-loader
y agrégalos en tu webpack.config.js:
module: {
loaders: [{
test: //.css$/,
loader: ''style!css?sourceMap''
}, {
test: //.woff(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff"
}, {
test: //.woff2(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff"
}, {
test: //.ttf(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=application/octet-stream"
}, {
test: //.eot(/?v=/d+/./d+/./d+)?$/,
loader: "file"
}, {
test: //.svg(/?v=/d+/./d+/./d+)?$/,
loader: "url?limit=10000&mimetype=image/svg+xml"
}]
}
Ahora si incluye en su entry.js
:
require(''font-awesome/css/font-awesome.css'');
Normalmente puede usar font-awesome en su plantilla:
<i class="fa fa-times"></i>
Esta idea me ayudó: https://gist.github.com/Turbo87/e8e941e68308d3b40ef6
Solo como una nota, me encontré con un error similar con el font-awesome-loader. Donde el directorio no se configuraría correctamente, independientemente de cualquiera de los cambios anteriores.
Para corregir esto, se puede agregar la opción publicPath al resultado:
output: { path: config.outputPath, filename: ''[name].js'', publicPath: ''/assets/'' },
La carpeta / assets / se cambiará a donde sea que almacene sus fuentes.
Espero que esto ayude.
Tenía font-awesome-webpack
trabajando en mi PC, pero no funcionaría en mi Mac. Creo que mi PC todavía estaba lanzando los 404 para .woff2, .woff y .tiff, pero los íconos se mostraban correctamente, así que ignoré el problema.
Mi Mac, sin embargo, no mostraría los íconos. Mientras leía este Q & A, probé un montón de cosas. Esto es lo que llevó a mi solución:
- En mi http://localhost:8080/View/ page, obtenía 404 que se parecía al siguiente enlace:
- http://localhost:8080/View/e6cf7c6ec7c2d6f670ae9d762604cb0b.woff2 en el navegador y confirmé el 404.
- Intenté ir a http://localhost:8080/e6cf7c6ec7c2d6f670ae9d762604cb0b.woff2 (eliminando la ruta adicional antes del archivo de fuente), y pude acceder al archivo.
- Modifiqué la respuesta de Paul para eliminar el
.
eso hizo que la solicitud de archivo sea relativa.
Por ejemplo, Paul sugirió:
{
test: //.woff(2)?(/?v=[0-9]/.[0-9]/.[0-9])?$/,
loader: ''url-loader?limit=10000&minetype=application/font-woff&name=./[hash].[ext]''
}
Tome nota del parámetro &name
, que usa ./[hash].[ext]
. Dejé caer el líder .
y ahora no hay 404 (el navegador solicita correctamente los archivos desde la raíz del sitio):
{
test: //.woff(2)?(/?v=[0-9]/.[0-9]/.[0-9])?$/,
loader: ''url-loader?limit=10000&minetype=application/font-woff&name=/[hash].[ext]''
}
Conclusión: si su punto de entrada NO está en su raíz web, y puede acceder a los archivos de fuente en la raíz web, probablemente solo necesite usar esta configuración de nombre para arreglar la ruta.
{
test: //.(png|woff|woff2|eot|ttf|svg)(/?v=/d+/./d+/./d+)?$/,
loader: ''url-loader?limit=100000''
}
Este esquema me ayudó