AFFiNE/apps/core/.webpack/webpack.config.ts

73 lines
2.3 KiB
TypeScript
Raw Normal View History

2023-08-29 19:51:57 +03:00
import { createConfiguration, rootPath, getPublicPath } from './config.js';
2023-07-18 19:53:10 +03:00
import { merge } from 'webpack-merge';
import { join, resolve } from 'node:path';
2023-07-18 19:53:10 +03:00
import type { BuildFlags } from '@affine/cli/config';
import { getRuntimeConfig } from './runtime-config.js';
import HTMLPlugin from 'html-webpack-plugin';
2023-07-18 19:53:10 +03:00
import { gitShortHash } from './s3-plugin.js';
2023-07-18 19:53:10 +03:00
export default async function (cli_env: any, _: any) {
const flags: BuildFlags = JSON.parse(
Buffer.from(cli_env.flags, 'hex').toString('utf-8')
);
console.log('build flags', flags);
const runtimeConfig = getRuntimeConfig(flags);
console.log('runtime config', runtimeConfig);
const config = createConfiguration(flags, runtimeConfig);
return merge(config, {
entry: {
'polyfill/intl-segmenter': {
import: resolve(rootPath, 'src/polyfill/intl-segmenter.ts'),
},
2023-08-04 02:05:46 +03:00
'polyfill/ses': {
2023-07-30 09:34:52 +03:00
import: resolve(rootPath, 'src/polyfill/ses.ts'),
2023-07-18 19:53:10 +03:00
},
2023-07-19 12:58:51 +03:00
plugin: {
dependOn: ['polyfill/intl-segmenter', 'polyfill/ses'],
2023-07-19 12:58:51 +03:00
import: resolve(rootPath, 'src/bootstrap/register-plugins.ts'),
},
2023-08-04 02:05:46 +03:00
app: {
chunkLoading: 'import',
dependOn: ['polyfill/intl-segmenter', 'polyfill/ses', 'plugin'],
2023-07-30 09:34:52 +03:00
import: resolve(rootPath, 'src/index.tsx'),
},
'_plugin/index.test': {
2023-08-04 02:05:46 +03:00
chunkLoading: 'import',
dependOn: ['polyfill/intl-segmenter', 'polyfill/ses', 'plugin'],
import: resolve(rootPath, 'src/_plugin/index.test.tsx'),
},
2023-07-18 19:53:10 +03:00
},
plugins: [
new HTMLPlugin({
template: join(rootPath, '.webpack', 'template.html'),
inject: 'body',
scriptLoading: 'module',
minify: false,
chunks: ['app', 'plugin', 'polyfill/intl-segmenter', 'polyfill/ses'],
filename: 'index.html',
templateParameters: {
GIT_SHORT_SHA: gitShortHash(),
},
}),
new HTMLPlugin({
template: join(rootPath, '.webpack', 'template.html'),
inject: 'body',
scriptLoading: 'module',
minify: false,
2023-08-29 19:51:57 +03:00
publicPath: getPublicPath(flags),
chunks: [
'_plugin/index.test',
'plugin',
'polyfill/intl-segmenter',
'polyfill/ses',
],
filename: '_plugin/index.html',
templateParameters: {
GIT_SHORT_SHA: gitShortHash(),
},
}),
],
2023-07-18 19:53:10 +03:00
});
}