build!: use scratch-webpack-configuration

This commit is contained in:
Christopher Willis-Ford 2024-03-07 15:53:06 -08:00
parent 5ad1d41a99
commit 607d675df5
3 changed files with 75 additions and 67 deletions

32
package-lock.json generated
View file

@ -31,11 +31,11 @@
"husky": "8.0.3",
"jsdom": "13.2.0",
"json": "9.0.6",
"lodash.defaultsdeep": "4.6.1",
"mkdirp": "2.1.6",
"rimraf": "3.0.2",
"scratch-render-fonts": "1.0.20",
"scratch-semantic-release-config": "1.0.14",
"scratch-webpack-configuration": "1.0.0",
"semantic-release": "19.0.5",
"tap": "11.1.5",
"webpack": "5.90.3",
@ -10868,12 +10868,6 @@
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
"dev": true
},
"node_modules/lodash.defaultsdeep": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
"integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
"dev": true
},
"node_modules/lodash.escaperegexp": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
@ -19569,6 +19563,21 @@
"semantic-release": ">=19.0.2"
}
},
"node_modules/scratch-webpack-configuration": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/scratch-webpack-configuration/-/scratch-webpack-configuration-1.0.0.tgz",
"integrity": "sha512-8t3Lda+kOPR/C+0jR1eOmyLO4pjDjT0BAWtmrZ1sXYfCmDhZreOwZMD6127aFYZbCWGK3qn0j2fjSi+unBnG4g==",
"dev": true,
"dependencies": {
"lodash.merge": "^4.6.2",
"webpack-node-externals": "^3.0.0"
},
"peerDependencies": {
"@babel/preset-env": "^7.24.0",
"babel-loader": "^9.1.3",
"webpack": "^5.90.3"
}
},
"node_modules/select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@ -22917,6 +22926,15 @@
"node": ">=10.0.0"
}
},
"node_modules/webpack-node-externals": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz",
"integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/webpack-sources": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",

View file

@ -46,11 +46,11 @@
"husky": "8.0.3",
"jsdom": "13.2.0",
"json": "9.0.6",
"lodash.defaultsdeep": "4.6.1",
"mkdirp": "2.1.6",
"rimraf": "3.0.2",
"scratch-render-fonts": "1.0.20",
"scratch-semantic-release-config": "1.0.14",
"scratch-webpack-configuration": "1.0.0",
"semantic-release": "19.0.5",
"tap": "11.1.5",
"webpack": "5.90.3",
@ -58,6 +58,12 @@
"webpack-dev-server": "3.11.3",
"xmldom": "0.1.31"
},
"browserslist": [
"Chrome >= 63",
"Edge >= 15",
"Firefox >= 57",
"Safari >= 11"
],
"config": {
"commitizen": {
"path": "cz-conventional-changelog"

View file

@ -1,68 +1,52 @@
const CopyWebpackPlugin = require('copy-webpack-plugin');
const defaultsDeep = require('lodash.defaultsdeep');
const path = require('path');
const ScratchWebpackConfigBuilder = require('scratch-webpack-configuration');
const base = {
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
devServer: {
contentBase: false,
host: '0.0.0.0',
port: process.env.PORT || 8576
},
devtool: 'cheap-module-source-map',
entry: {
'scratch-svg-renderer': './src/index.js'
},
module: {
rules: [{
include: [
path.resolve('src'),
path.resolve('node_modules', 'scratch-render-fonts')
],
test: /\.js$/,
loader: 'babel-loader',
options: {
presets: [['@babel/preset-env', {targets: {}}]]
}
}]
},
plugins: []
const common = {
libraryName: 'ScratchSVGRenderer',
rootPath: path.resolve(__dirname)
};
module.exports = [
defaultsDeep({}, base, {
target: 'web',
/**
* @type {import('webpack').Configuration}
*/
const nodeConfig = new ScratchWebpackConfigBuilder(common)
.setTarget('node')
.get();
/**
* @type {import('webpack').Configuration}
*/
const webConfig = new ScratchWebpackConfigBuilder(common)
.setTarget('browserslist')
.get();
/**
* @type {import('webpack').Configuration}
*/
const playgroundConfig = new ScratchWebpackConfigBuilder(common)
.setTarget('browserslist')
.merge({
devServer: {
contentBase: false,
port: process.env.PORT || 8576
},
output: {
library: 'ScratchSVGRenderer',
libraryTarget: 'umd',
path: path.resolve('playground'),
publicPath: '/',
filename: '[name].js'
},
plugins: base.plugins.concat([
new CopyWebpackPlugin([
{
from: 'src/playground'
}
])
])
}),
defaultsDeep({}, base, {
output: {
library: 'ScratchSVGRenderer',
libraryTarget: 'umd',
path: path.resolve('dist', 'web'),
filename: '[name].js'
},
module: {
rules: [{
options: {
presets: [['env', {targets: {browsers: ['last 3 versions', 'Safari >= 8', 'iOS >= 8']}}]]
}
}]
},
optimization: {
minimize: process.env.NODE_ENV === 'production'
path: path.resolve(__dirname, 'playground'),
publicPath: '/'
}
})
.addPlugin(
new CopyWebpackPlugin([
{
from: 'src/playground'
}
])
)
.get();
module.exports = [
nodeConfig,
webConfig,
playgroundConfig
];