Как сказать Webpack ничего не выводить?
Я пытаюсь настроить svg-sprite-loader/plugin
, Я создал автономный файл конфигурации Webpack для этой задачи. Посмотри в указанный каталог и возьми каждый .svg
от него. Результат icons.svg
файл спрайта. НО Webpack также создает .js
для каждого входного файла. Можно ли исключить или... удалить... или что-то... эти файлы? Другими словами, мне нужен только вывод плагинов, больше ничего.
Заранее спасибо!
PS Может быть, я просто должен программно удалить эти файлы после выполнения задачи?
webpack.prod.conf.js
const merge = require('webpack-merge');
const webpackBaseConfig = require('./webpack.base.conf');
const webpackSpritesConfig = require('./webpack.sprites.conf');
module.exports = [
webpackSpritesConfig,
merge(webpackBaseConfig, {
...
})
];
webpack.sprites.conf.js
const fs = require('fs');
const path = require('path');
const SpriteLoaderPlugin = require('svg-sprite-loader/plugin');
function getSprites() {
let sprites = {};
fs.readdirSync(path.resolve(__dirname, '../src/sprites'))
.filter(file => file.match(/\.svg/))
.forEach(file => {
let filename = file.split('.');
filename.pop();
sprites[filename] = path.resolve(__dirname, '../src/sprites/' + file);
});
return sprites;
}
module.exports = {
entry: getSprites(),
module: {
rules: [
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
options: {
extract: true,
spriteFilename: 'img/icons.svg'
}
}
]
},
plugins: [new SpriteLoaderPlugin()]
};
1 ответ
Мой обходной путь - удалить эти сгенерированные файлы после Webpack. done
крюк:
webpack.sprites.conf.js
const fs = require('fs');
const path = require('path');
const SpriteLoaderPlugin = require('svg-sprite-loader/plugin');
const EventHooksPlugin = require('event-hooks-webpack-plugin');
const { CallbackTask } = require('event-hooks-webpack-plugin/lib/tasks');
let files = [];
function getSprites() {
let sprites = {};
fs.readdirSync(path.resolve(__dirname, '../src/sprites'))
.filter(file => file.match(/\.svg/))
.forEach(file => {
let filename = file.split('.');
filename.pop();
files.push(path.resolve(__dirname, '../dist/' + filename + '.js'));
sprites[filename] = path.resolve(__dirname, '../src/sprites/' + file);
});
return sprites;
}
module.exports = {
entry: getSprites(),
module: {
rules: [
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
options: {
extract: true,
spriteFilename: 'img/icons.svg'
}
}
]
},
plugins: [
new SpriteLoaderPlugin(),
new EventHooksPlugin({
done: new CallbackTask((compiler, callback) => {
files.forEach(file => {
fs.unlinkSync(file);
});
callback();
})
})
]
};