Angular2 アプリケーションでは、次のように webpack 構成でファイル ローダーをセットアップしています。
{
test: /\.(eot|svg|ttf|woff|woff2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'file?name=/assets/fonts/[name].[ext]'
}
私はこれを設定の他の場所にも持っています:
modulesDirectories: ['node_modules']
私が理解しているように、ファイル ローダーは指定された式 (この場合はフォント ファイル) に一致するファイルを node_modules フォルダーで検索し、それらを/assets/fonts
ビルド出力のフォルダーにコピーします。ただし、ファイルが実際に宛先フォルダーにコピーされないため、これは機能します。私は何が欠けていますか?
node_modules
余談ですが、同じ名前の複数のパッケージにファイルが存在する可能性があるため、競合がどのように処理されるかについても知りたいです。
詳細情報:
vendor.scss
ファイルには以下が含まれます: $zmdi-font-path: "assets/fonts"; @import "~material-design-iconic-font/scss/material-design-iconic-font.scss";
sass-loader は最終的にこれを適用して、次の css を生成します。
@font-face {
font-family: 'Material';
src:url('assets/fonts/Material-Design-Iconic-Font.woff2?v=2.2.0') format('woff2'),url('assets/fonts/Material-Design-Iconic-Font.woff?v=2.2.0') format('woff'),url('assets/fonts/Material-Design-Iconic-Font.ttf?v=2.2.0}') format('truetype');
font-weight: normal;
font-style: normal;
}
上記の 2 つの手順により、ブラウザから のフォント ファイルへのリクエストが発生しますassets/fonts/Material-Design-Iconic-Font.woff2?v=2.2.0
。これは明らかに実行時まで発生しません。require
ビルド時にアセット/フォントにコピーされるようにするには、ファイルをどこに置きますか?
パイプラインでも使用していsass-loader
ます: { test: /.scss$/, loaders: ['raw-loader', 'sass-loader'] }
次のように私のコンポーネントにsassを含めます:
styleUrls: [
'./../assets/scss/main.scss'
]
ブラウザから見ると CSS が HTML に含まれていることがわかりますが、フォントを呼び出すと 404 が返されます。