main
HerrHase 3 weeks ago
parent c0fa667d94
commit 747c2cfedd

@ -19,80 +19,85 @@ const glob = require('glob')
module.exports = function tinyComponentsWebpack(files, options = {}) {
// merge options with defaults
const defaults = Object.assign({
context: path.resolve(process.cwd(), ''),
destination: path.resolve(process.cwd(), 'public'),
publicPath: '/',
purge: {
src: path.join(__dirname, 'js')
},
plugins: []
}, options)
// merge options with defaults
const defaults = Object.assign({
context: path.resolve(process.cwd(), ''),
destination: path.resolve(process.cwd(), 'public'),
publicPath: '/',
purge: {
src: path.join(__dirname, 'js')
},
plugins: []
}, options)
const config = {
context: defaults.context,
entry: files,
output: {
path: defaults.destination,
filename: 'js/[name].js',
publicPath: defaults.publicPath
},
const config = {
context: defaults.context,
entry: files,
output: {
path: defaults.destination,
filename: 'js/[name].js',
publicPath: defaults.publicPath
},
resolve: {
modules: ['node_modules'],
},
resolve: {
modules: ['node_modules'],
},
optimization: {
removeEmptyChunks: true,
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
output: {
comments: false,
},
},
extractComments: false
})
]
},
optimization: {
removeEmptyChunks: true,
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
output: {
comments: false,
},
},
extractComments: false
})
]
},
module: {
rules: [{
test: /\.(css|scss)$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: { url: false }
},
'sass-loader'
]
module: {
rules: [{
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]",
}
}]
}
}
test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
type: 'asset/resource',
generator: {
filename: "fonts/[name].[ext]",
}
}]
}
}
config.plugins = defaults.plugins.concat([
new RemoveEmptyScriptsPlugin(),
new MiniCssExtractPlugin({
filename: 'css/[name].css',
}),
new PurgeCSSPlugin({
paths: glob.sync(`${defaults.purge.src}/**/*`, { nodir: true }),
safelist: defaults.purge.safelist
}),
new ManifestPlugin({
filename: 'assets-manifest.json',
context: defaults.destination
})
])
const plugins = [
new RemoveEmptyScriptsPlugin(),
new MiniCssExtractPlugin({
filename: 'css/[name].css',
}),
new ManifestPlugin({
filename: 'assets-manifest.json',
context: defaults.destination
})
]
if (defaults.purge) {
plugins.push(new PurgeCSSPlugin({
paths: glob.sync(`${defaults.purge.src}/**/*`, { nodir: true }),
safelist: defaults.purge.safelist
}))
}
config.plugins = defaults.plugins.concat(plugins)
// if rules exists add
if (defaults.rules) {
@ -102,33 +107,33 @@ const glob = require('glob')
}
// adding svg src
if (defaults.svg.src) {
config.plugins.push(new SvgSpritemapPlugin(defaults.svg.src, {
output: {
filename: 'symbol-defs.svg',
chunk: {
keep: true
},
svgo: {
plugins: [{
name: 'convertStyleToAttrs',
active: true
},{
name: 'removeStyleElement',
active: true
}, {
name: 'removeAttrs',
params: {
attrs: 'fill'
}
}]
}
},
sprite: {
prefix: 'icon-'
}
}))
}
if (defaults.svg.src) {
config.plugins.push(new SvgSpritemapPlugin(defaults.svg.src, {
output: {
filename: 'symbol-defs.svg',
chunk: {
keep: true
},
svgo: {
plugins: [{
name: 'convertStyleToAttrs',
active: true
},{
name: 'removeStyleElement',
active: true
}, {
name: 'removeAttrs',
params: {
attrs: 'fill'
}
}]
}
},
sprite: {
prefix: 'icon-'
}
}))
}
return config
return config
}

2536
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -1,10 +1,10 @@
{
"name": "@tiny-components/webpack",
"version": "0.6.0",
"version": "0.7.0",
"description": "Webpack Wrapper",
"repository": {
"type": "git",
"url": "git@git.node001.net:tiny-components/webpack.git"
"type": "git",
"url": "git@git.node001.net:tiny-components/webpack.git"
},
"author": "Björn Hase <me@herr-hase.wtf>",
"license": "MIT",
@ -15,6 +15,7 @@
"sass": "^1.71.1",
"sass-loader": "^14.1.1",
"svg-spritemap-webpack-plugin": "^4.5.0",
"terser-webpack-plugin": "^5.6.1",
"webpack": "^5.90.3",
"webpack-cli": "^5.1.4",
"webpack-remove-empty-scripts": "^1.0.4"

Loading…
Cancel
Save