2022-05-02 00:15:13 +08:00
|
|
|
const semi = require('@douyinfe/semi-next').default({});
|
2022-03-12 10:31:03 +08:00
|
|
|
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
|
2022-05-18 16:50:42 +08:00
|
|
|
const withOffline = require('next-offline');
|
2022-03-12 10:31:03 +08:00
|
|
|
const { getConfig } = require('@think/config');
|
2022-03-26 22:02:26 +08:00
|
|
|
const config = getConfig();
|
2022-02-20 19:51:55 +08:00
|
|
|
|
2022-05-02 00:15:13 +08:00
|
|
|
/** @type {import('next').NextConfig} */
|
|
|
|
const nextConfig = semi({
|
2022-02-20 19:51:55 +08:00
|
|
|
assetPrefix: config.assetPrefix,
|
|
|
|
env: {
|
2022-05-02 00:15:13 +08:00
|
|
|
SERVER_API_URL: config.client.apiUrl,
|
|
|
|
COLLABORATION_API_URL: config.client.collaborationUrl,
|
|
|
|
ENABLE_ALIYUN_OSS: !!config.oss.aliyun.accessKeyId,
|
2022-05-11 14:05:11 +08:00
|
|
|
DRAWIO_URL: config.client.drawioUrl || 'https://embed.diagrams.net',
|
2022-02-20 19:51:55 +08:00
|
|
|
},
|
|
|
|
webpack: (config, { dev, isServer }) => {
|
|
|
|
config.resolve.plugins.push(new TsconfigPathsPlugin());
|
|
|
|
return config;
|
|
|
|
},
|
|
|
|
eslint: {
|
|
|
|
ignoreDuringBuilds: true,
|
|
|
|
},
|
2022-03-21 19:55:06 +08:00
|
|
|
// FIXME: douyinfe 的第三方包存在 ts 类型错误!
|
|
|
|
typescript: {
|
|
|
|
ignoreBuildErrors: true,
|
|
|
|
},
|
2022-05-18 17:04:08 +08:00
|
|
|
compiler: {
|
|
|
|
removeConsole: {
|
|
|
|
exclude: ['error'],
|
|
|
|
},
|
|
|
|
},
|
2022-05-18 16:50:42 +08:00
|
|
|
workboxOpts: {
|
|
|
|
runtimeCaching: [
|
|
|
|
{
|
|
|
|
urlPattern: /.(png|jpg|jpeg|svg|webp)$/,
|
|
|
|
handler: 'CacheFirst',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
urlPattern: /api/,
|
|
|
|
handler: 'NetworkFirst',
|
|
|
|
options: {
|
|
|
|
cacheableResponse: {
|
|
|
|
statuses: [0, 200],
|
|
|
|
headers: {
|
|
|
|
'x-sw': 'true',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
2022-02-20 19:51:55 +08:00
|
|
|
});
|
|
|
|
|
2022-05-18 16:50:42 +08:00
|
|
|
module.exports = withOffline(nextConfig);
|