webpack 字体很棒,在根目录下转储文件
webpack font awesome, dumping files at root
我有下面的 webpack.config,当我在我的 index.js 中导入 font awesome 时,webpack 正在将所有字体文件转储到根目录 (dist)。字体规则将它们放在“字体”子文件夹中,但它也会以这种奇怪的格式(导出命令)将它们转储到根目录中。
如果我不导入 fontawesome,它不会在根目录下创建文件。我不明白为什么会这样,关于如何解决的任何想法。
webpack.config.js:
const path = require('path');
const webpack = require('webpack');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const { VueLoaderPlugin } = require("vue-loader");
const srcPath = path.resolve(__dirname, './src');
const stylePath = path.resolve(srcPath, './styles');
const bldPath = path.resolve('../MyApp/wwwroot/dist');
module.exports = {
devtool: 'source-map',
entry: {
master: path.resolve(srcPath, 'index.js'),
style: `${stylePath}/style.css`
},
mode: 'development',
module: {
rules: [
{
test: /\.scss$/,
use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader']
},
{
exclude: /(node_modules|bower_components)/,
include: srcPath,
test: /\.js$/,
use: [{ loader: 'babel-loader' }]
},
{
test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
publicPath: './fonts/',
outputPath: './fonts/',
esModule: false
}
}
]
},
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, 'css-loader']
},
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.(png|jpg|jpeg|gif)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: './images/',
publicPath: './images/',
esModule: false
}
}
]
},
{
test: require.resolve("jquery"),
loader: "expose-loader",
options: {
exposes: ["$", "jQuery"],
},
}
]
},
optimization: {
splitChunks: {
cacheGroups: {
vendors: {
chunks: 'all',
name: 'vendor',
test: /[\/]node_modules[\/]/
}
}
},
},
output: {
path: `${bldPath}`,
publicPath: '/wwwroot/dist/'
},
plugins: [
new CleanWebpackPlugin({
cleanOnceBeforeBuildPatterns: [`${bldPath}/**`],
dry: false,
verbose: true,
dangerouslyAllowCleanPatternsOutsideProject: true
}),
new VueLoaderPlugin(),
new MiniCssExtractPlugin({
filename: '[name].min.css'
})
]
};
index.js > 正在导入 fontawesome...
import '@fortawesome/fontawesome-free/css/all.css';
结果...
其中一个文件的内容...
看起来我在导入 fontawesome 5 时出错了,我最终在我的入口 js 文件中这样做了 (index.js)。现在所有图标都可用,不再将所有字体转储到 /dist 根目录。
导入'@fortawesome/fontawesome-free/js/fontawesome'
导入“@fortawesome/fontawesome-free/js/solid”
导入“@fortawesome/fontawesome-free/js/regular”
导入'@fortawesome/fontawesome-free/js/brands'
我在哪里找到答案:
How to make Font awesome 5 work with webpack
我有下面的 webpack.config,当我在我的 index.js 中导入 font awesome 时,webpack 正在将所有字体文件转储到根目录 (dist)。字体规则将它们放在“字体”子文件夹中,但它也会以这种奇怪的格式(导出命令)将它们转储到根目录中。
如果我不导入 fontawesome,它不会在根目录下创建文件。我不明白为什么会这样,关于如何解决的任何想法。
webpack.config.js:
const path = require('path');
const webpack = require('webpack');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const { VueLoaderPlugin } = require("vue-loader");
const srcPath = path.resolve(__dirname, './src');
const stylePath = path.resolve(srcPath, './styles');
const bldPath = path.resolve('../MyApp/wwwroot/dist');
module.exports = {
devtool: 'source-map',
entry: {
master: path.resolve(srcPath, 'index.js'),
style: `${stylePath}/style.css`
},
mode: 'development',
module: {
rules: [
{
test: /\.scss$/,
use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader']
},
{
exclude: /(node_modules|bower_components)/,
include: srcPath,
test: /\.js$/,
use: [{ loader: 'babel-loader' }]
},
{
test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
publicPath: './fonts/',
outputPath: './fonts/',
esModule: false
}
}
]
},
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, 'css-loader']
},
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.(png|jpg|jpeg|gif)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: './images/',
publicPath: './images/',
esModule: false
}
}
]
},
{
test: require.resolve("jquery"),
loader: "expose-loader",
options: {
exposes: ["$", "jQuery"],
},
}
]
},
optimization: {
splitChunks: {
cacheGroups: {
vendors: {
chunks: 'all',
name: 'vendor',
test: /[\/]node_modules[\/]/
}
}
},
},
output: {
path: `${bldPath}`,
publicPath: '/wwwroot/dist/'
},
plugins: [
new CleanWebpackPlugin({
cleanOnceBeforeBuildPatterns: [`${bldPath}/**`],
dry: false,
verbose: true,
dangerouslyAllowCleanPatternsOutsideProject: true
}),
new VueLoaderPlugin(),
new MiniCssExtractPlugin({
filename: '[name].min.css'
})
]
};
index.js > 正在导入 fontawesome...
import '@fortawesome/fontawesome-free/css/all.css';
结果...
其中一个文件的内容...
看起来我在导入 fontawesome 5 时出错了,我最终在我的入口 js 文件中这样做了 (index.js)。现在所有图标都可用,不再将所有字体转储到 /dist 根目录。
导入'@fortawesome/fontawesome-free/js/fontawesome' 导入“@fortawesome/fontawesome-free/js/solid” 导入“@fortawesome/fontawesome-free/js/regular” 导入'@fortawesome/fontawesome-free/js/brands'
我在哪里找到答案:
How to make Font awesome 5 work with webpack