112 lines
3.1 KiB
TypeScript
112 lines
3.1 KiB
TypeScript
import webpack from 'webpack';
|
|
import { CleanWebpackPlugin } from 'clean-webpack-plugin';
|
|
import path from 'path';
|
|
import { argv } from 'process';
|
|
|
|
let env = process.env['NODE_ENV'];
|
|
let isProduction =
|
|
(env && env.match(/production/)) ||
|
|
argv.reduce((prev, cur) => prev || cur === '--production', false);
|
|
|
|
let config: webpack.Configuration = {
|
|
context: path.join(__dirname, 'src'),
|
|
entry: {
|
|
app: './main.ts'
|
|
},
|
|
output: {
|
|
filename: 'main.js',
|
|
path: path.resolve(__dirname, 'dist')
|
|
},
|
|
resolve: {
|
|
extensions: ['.ts', '.tsx', 'js'],
|
|
modules: [path.resolve(__dirname, 'src'), 'node_modules']
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.ts/,
|
|
exclude: /node_modules/,
|
|
loader: 'ts-loader',
|
|
options: {
|
|
transpileOnly: true,
|
|
compilerOptions: {
|
|
isolatedModules: true
|
|
}
|
|
}
|
|
},
|
|
{
|
|
test: /\.wgsl/,
|
|
type: 'asset/source'
|
|
}
|
|
]
|
|
},
|
|
node: false,
|
|
plugins: [
|
|
new CleanWebpackPlugin(),
|
|
new webpack.DefinePlugin({
|
|
'process.env': {
|
|
NODE_ENV: JSON.stringify(
|
|
isProduction ? 'production' : 'development'
|
|
)
|
|
}
|
|
})
|
|
],
|
|
optimization: {
|
|
minimize: isProduction ? true : false
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Start Build
|
|
*/
|
|
const compiler: webpack.Compiler = webpack(config);
|
|
|
|
if (!argv.reduce((prev, cur) => prev || cur === '--watch', false)) {
|
|
compiler.run((err, stats) => {
|
|
if (err) return console.error(err);
|
|
|
|
if (stats.hasErrors()) {
|
|
let statsJson = stats.toJson();
|
|
console.log(
|
|
'❌' + ' · Error · ' + 'webgpu-seed failed to compile:'
|
|
);
|
|
for (let error of statsJson.errors) {
|
|
console.log(error.message);
|
|
}
|
|
return;
|
|
}
|
|
console.log(
|
|
'✔️️' +
|
|
' · Success · ' +
|
|
'webgpu-seed' +
|
|
(isProduction ? ' (production) ' : ' (development) ') +
|
|
'built in ' +
|
|
(+stats.endTime - +stats.startTime + ' ms.')
|
|
);
|
|
});
|
|
} else {
|
|
compiler.watch({}, (err, stats) => {
|
|
if (err) return console.error(err);
|
|
|
|
if (stats.hasErrors()) {
|
|
let statsJson = stats.toJson();
|
|
console.log(
|
|
'❌' + ' · Error · ' + 'webgpu-seed failed to compile:'
|
|
);
|
|
for (let error of statsJson.errors) {
|
|
console.log(error.message);
|
|
}
|
|
console.log('\n👀 · Watching for changes... · \n');
|
|
return;
|
|
}
|
|
console.log(
|
|
'✔️️' +
|
|
' · Success · ' +
|
|
'webgpu-seed' +
|
|
(isProduction ? ' (production) ' : ' (development) ') +
|
|
'built in ' +
|
|
(+stats.endTime - +stats.startTime + ' ms.') +
|
|
'\n👀 · Watching for changes... · \n'
|
|
);
|
|
});
|
|
}
|