J'essaie de déplacer les éléments (images et polices) utilisés dans l'un de mes .scss
fichiers, mais il semble qu'ils soient ignorés:
Voici mon fichier . Scss:
@font-face {
font-family: 'myfont';
src: url('../../assets/fonts/myfont.ttf') format('truetype');
font-weight: 600;
font-style: normal;
}
body {
color: red;
font-family: 'myfont';
background: url('../../assets/images/bg.jpg');
}
Et voici mon webpack.config.js:
const path = require('path');
const { CheckerPlugin } = require('awesome-TypeScript-loader');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
target: 'node',
entry: path.resolve(__dirname, 'server.tsx'),
output: {
filename: 'server_bundle.js',
path: path.resolve(__dirname, 'build'),
publicPath: '/build'
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx']
},
module: {
rules: [{
test: /\.(tsx|ts)?$/,
loader: 'awesome-TypeScript-loader',
options: {
jsx: 'react'
}
},
{
test: /\.(scss|sass|css)$/,
use: [
MiniCssExtractPlugin.loader,
{ loader: 'css-loader', options: { url: false, sourceMap: true } },
{ loader: 'sass-loader', options: { sourceMap: true } },
]
},
{
test: /\.(png|svg|jpg|jpeg|gif)$/,
loader: 'file-loader',
options: { outputPath: 'public/images' }
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
loader: 'file-loader',
options: { outputPath: 'public/fonts' }
}
]
},
plugins: [
new CheckerPlugin(),
new MiniCssExtractPlugin({
filename: 'public/styles_bundle.css',
chunkFilename: "public/styles/[id].css"
})
]
}
Je reçois ce fichier . Css dans mon navigateur en tant que sortie (Notez le nom de l'image):
body {
color: red;
background: url("../../assets/images/myimage.jpg");
}
Et dans mon répertoire public
j'obtiens ceci:
public/
styles_bundle.css
Ici, nous avons deux problèmes:
J'ai tout essayé, mais je ne sais pas ce qui peut se passer ici ... Des idées?
Je viens de résoudre un problème similaire. Si vous modifiez l'option url sur true, vous risquez de voir des références d'URL d'image échouées.
{ loader: 'css-loader', options: { url: false, sourceMap: true } },
Ou vous pouvez vérifier manuellement si la référence de chemin est correcte.
url('../../assets/images/bg.jpg')
Je pense que le dossier d'images n'est pas créé car tous les liens de ressource d'image sont incorrects.
Pour le problème que je résolvais, les références étaient toutes fausses et je ne pouvais pas les résoudre, alors j'ai juste utilisé cela plugin de copie webpack pour copier les fichiers au bon emplacement du dossier dist.
vous avez besoin d'un chargeur d'url
{
test: /\.(jpg|png|gif|woff|eot|ttf|svg)/,
use: {
loader: 'url-loader', // this need file-loader
options: {
limit: 50000
}
}
}