配置参考
Nasti 使用 nasti.config.ts(或 .js / .mjs)作为配置文件。
完整配置示例
import { defineConfig } from '@nasti-toolchain/nasti'
export default defineConfig({
root: '.',
base: '/',
mode: 'development',
framework: 'react',
logLevel: 'info',
envPrefix: ['NASTI_', 'VITE_'],
resolve: {
alias: { '@': '/src' },
extensions: ['.ts', '.tsx', '.js', '.jsx'],
},
server: {
port: 3000,
host: true,
open: true,
cors: true,
hmr: true,
},
build: {
outDir: 'dist',
assetsDir: 'assets',
sourcemap: true,
minify: true,
emptyOutDir: true,
target: 'es2022',
},
plugins: [],
})
通用选项
| 选项 | 类型 | 默认值 | 说明 |
root | string | '.' | 项目根目录 |
base | string | '/' | 公共基础路径 |
mode | string | 'development' | 运行模式 |
target | 'web' | 'electron' | 'web' | 打包目标平台,详见 Electron |
framework | 'react' | 'vue' | 'auto' | 'auto' | 框架类型 |
logLevel | 'info' | 'warn' | 'error' | 'silent' | 'info' | 日志级别 |
envPrefix | string | string[] | ['NASTI_', 'VITE_'] | 暴露给客户端的环境变量前缀 |
plugins | NastiPlugin[] | [] | 插件列表 |
resolve 选项
| 选项 | 类型 | 默认值 | 说明 |
alias | Record<string, string> | {} | 路径别名 |
extensions | string[] | ['.ts', '.tsx', ...] | 导入时省略的扩展名 |
conditions | string[] | ['import', 'module', ...] | package.json exports 条件 |
mainFields | string[] | ['module', 'main'] | package.json 入口字段 |
server 选项
| 选项 | 类型 | 默认值 | 说明 |
port | number | 3000 | 端口号 |
host | string | boolean | 'localhost' | 监听地址,true 表示 0.0.0.0 |
https | boolean | false | 是否启用 HTTPS |
open | boolean | string | false | 自动打开浏览器 |
cors | boolean | true | 是否启用 CORS |
hmr | boolean | HmrConfig | true | HMR 配置 |
build 选项
| 选项 | 类型 | 默认值 | 说明 |
outDir | string | 'dist' | 输出目录 |
assetsDir | string | 'assets' | 资源子目录 |
minify | boolean | true | 是否压缩 |
sourcemap | boolean | 'inline' | 'hidden' | false | Source map |
target | string | 'es2022' | 构建目标 |
emptyOutDir | boolean | true | 构建前清空输出目录 |
rolldownOptions | object | {} | 透传给 Rolldown 的底层选项,用于手动控制 Tree-shaking(treeshake)与代码拆分(output.advancedChunks / output.codeSplitting)。详见下方示例 |
rolldownOptions:手动控制代码拆分与 Tree-shaking
生产应用常需手动分包(vendor / 按路由拆分)并精细化 Tree-shaking。rolldownOptions 的 input 侧选项(如 treeshake、resolve、external)会合并进 Rolldown,output 则合并进产物写出阶段(bundle.write())。注:input / plugins 由 Nasti 接管,output.dir 始终由 build.outDir 决定。
export default defineConfig({
build: {
rolldownOptions: {
treeshake: {
moduleSideEffects: [{ test: /\/barrel\//, sideEffects: false }],
},
output: {
advancedChunks: {
groups: [
{ name: 'react-vendor', test: /node_modules[\\/]react/, priority: 20 },
{ name: 'vendor', test: /node_modules/, priority: 10 },
],
},
chunkFileNames: 'assets/chunks/[name].[hash].js',
},
},
},
})
electron 选项
仅在 target: 'electron' 时生效,要求 Electron 41+。完整示例见 Electron 指南。
| 选项 | 类型 | 默认值 | 说明 |
main | string | 'src/electron/main.ts' | 主进程入口 |
preload | string | string[] | 'src/electron/preload.ts' | Preload 脚本,可多入口 |
renderer | string | 'index.html' | 渲染进程入口 HTML |
mainFormat | 'cjs' | 'esm' | 'cjs' | 主进程输出格式(ESM 需 Electron 41+) |
preloadFormat | 'cjs' | 'esm' | 'cjs' | Preload 输出格式 |
nodeTarget | string | 'node22' | 主/preload 的 Node 版本目标 |
autoRestart | boolean | true | dev 模式下自动重启 Electron |
minVersion | number | 41 | 允许的最低 Electron 大版本 |
electronPath | string | '' | 自定义 Electron 可执行文件路径 |
electronArgs | string[] | [] | 传递给 Electron 的 CLI 参数 |
external | string[] | ['electron'] | 主/preload 外部化依赖 |