36 lines
1.6 KiB
TypeScript
36 lines
1.6 KiB
TypeScript
/**
|
|
* Next应用配置。为webpack与Turbopack安装相同ReactFlow编译扩展,并给带内容摘要的图标分片设置长期缓存。
|
|
* 此处只配置应用编译/响应头,不改变headless SDK导出或服务端数据协议。
|
|
*/
|
|
import type { NextConfig } from "next";
|
|
/** StrictMode显式开启开发检查,poweredByHeader关闭Next标识响应头;其余保持框架默认行为。 */
|
|
const config: NextConfig = {
|
|
reactStrictMode: true, poweredByHeader: false,
|
|
/** 在现有规则后追加匹配ReactFlow ESM入口的loader,再返回原配置对象,保留框架其它规则。 */
|
|
webpack(config) {
|
|
config.module.rules.push({
|
|
test: /[\\/]@xyflow[\\/]react[\\/]dist[\\/]esm[\\/]index\.(?:mjs|js)$/,
|
|
use: [{ loader: require.resolve("./scripts/loaders/xyflow-retained.cjs") }],
|
|
});
|
|
return config;
|
|
},
|
|
// Turbopack使用条件路径匹配同一个入口;单独配置以免切换构建器时丢失保留节点扩展。
|
|
turbopack: {
|
|
rules: {
|
|
"*": {
|
|
condition: { path: /[\\/]@xyflow[\\/]react[\\/]dist[\\/]esm[\\/]index\.(?:mjs|js)$/ },
|
|
loaders: ["./scripts/loaders/xyflow-retained.cjs"],
|
|
},
|
|
},
|
|
},
|
|
/** 只给版本目录内带12位十六进制摘要的JSON分片配置一年immutable缓存,文件内容变化应生成新文件名。
|
|
* 不对图标目录manifest、页面或全部JSON一概设置immutable。 */
|
|
async headers() {
|
|
return [{
|
|
source: "/canvas-icons/:version/:asset([a-z0-9-]+-[a-f0-9]{12}\\.json)",
|
|
headers: [{ key: "Cache-Control", value: "public, max-age=31536000, immutable" }],
|
|
}];
|
|
},
|
|
};
|
|
export default config;
|