@ -7,15 +7,14 @@ const SvgSpritemapPlugin = require('svg-spritemap-webpack-plugin')
const path = require ( 'path' )
const glob = require ( 'glob' )
const PATHS = {
src : path . join ( _ _dirname , 'resources/js' )
}
module . exports = function tinyComponentsWebpack ( files , options = { } ) {
// merge options with defaults
const defaults = Object . assign ( {
destination : path . resolve ( _ _dirname , 'public' )
destination : path . resolve ( process . cwd ( ) , 'public' ) ,
purge : {
src : path . join ( _ _dirname , 'js' )
}
} , options )
const config = {
@ -25,6 +24,10 @@ module.exports = function tinyComponentsWebpack(files, options = {}) {
filename : 'js/[name].js' ,
} ,
resolve : {
modules : [ 'node_modules' ] ,
} ,
optimization : {
removeEmptyChunks : true ,
minimize : true ,
@ -42,24 +45,22 @@ module.exports = function tinyComponentsWebpack(files, options = {}) {
module : {
rules : [ {
test : /\.riot$/ ,
exclude : /node_modules/ ,
use : [ {
loader : '@riotjs/webpack-loader' ,
options : {
hot : false ,
}
} ]
} ,
{
test : /\.scss$/ ,
use : [
MiniCssExtractPlugin . loader ,
'css-loader' ,
'sass-loader'
] ,
test : /\.(css|scss)$/ ,
use : [
MiniCssExtractPlugin . loader ,
{
loader : 'css-loader' ,
options : { url : false }
} ,
'sass-loader'
]
} , {
test : /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/ ,
type : 'asset/resource' ,
generator : {
filename : "fonts/[name].[ext]" ,
}
]
} ]
} ,
plugins : [
@ -68,11 +69,19 @@ module.exports = function tinyComponentsWebpack(files, options = {}) {
filename : 'css/[name].css' ,
} ) ,
new PurgeCSSPlugin ( {
paths : glob . sync ( ` ${ PATHS . src } /**/* ` , { nodir : true } )
paths : glob . sync ( ` ${ defaults. purge . src } /**/* ` , { nodir : true } )
} ) ,
] ,
}
// if rules exists add
if ( defaults . rules ) {
defaults . rules . each ( ( rule ) => {
config . module . rules . push ( rule )
} )
}
// adding svg src
if ( defaults . svg . src ) {
config . plugins . push ( new SvgSpritemapPlugin ( defaults . svg . src , {
output : {