配置参考

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: [],
})

通用选项

选项类型默认值说明
rootstring'.'项目根目录
basestring'/'公共基础路径
modestring'development'运行模式
target'web' | 'electron''web'打包目标平台,详见 Electron
framework'react' | 'vue' | 'auto''auto'框架类型
logLevel'info' | 'warn' | 'error' | 'silent''info'日志级别
envPrefixstring | string[]['NASTI_', 'VITE_']暴露给客户端的环境变量前缀
pluginsNastiPlugin[][]插件列表

resolve 选项

选项类型默认值说明
aliasRecord<string, string>{}路径别名
extensionsstring[]['.ts', '.tsx', ...]导入时省略的扩展名
conditionsstring[]['import', 'module', ...]package.json exports 条件
mainFieldsstring[]['module', 'main']package.json 入口字段

server 选项

选项类型默认值说明
portnumber3000端口号
hoststring | boolean'localhost'监听地址,true 表示 0.0.0.0
httpsbooleanfalse是否启用 HTTPS
openboolean | stringfalse自动打开浏览器
corsbooleantrue是否启用 CORS
hmrboolean | HmrConfigtrueHMR 配置

build 选项

选项类型默认值说明
outDirstring'dist'输出目录
assetsDirstring'assets'资源子目录
minifybooleantrue是否压缩
sourcemapboolean | 'inline' | 'hidden'falseSource map
targetstring'es2022'构建目标
emptyOutDirbooleantrue构建前清空输出目录
rolldownOptionsobject{}透传给 Rolldown 的底层选项,用于手动控制 Tree-shakingtreeshake)与代码拆分output.advancedChunks / output.codeSplitting)。详见下方示例

rolldownOptions:手动控制代码拆分与 Tree-shaking

生产应用常需手动分包(vendor / 按路由拆分)并精细化 Tree-shaking。rolldownOptions 的 input 侧选项(如 treeshakeresolveexternal)会合并进 Rolldown,output 则合并进产物写出阶段(bundle.write())。注:input / plugins 由 Nasti 接管,output.dir 始终由 build.outDir 决定。

export default defineConfig({
  build: {
    rolldownOptions: {
      // Tree-shaking(input 选项)
      treeshake: {
        moduleSideEffects: [{ test: /\/barrel\//, sideEffects: false }],
      },
      // 代码拆分(output 选项)
      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 指南

选项类型默认值说明
mainstring'src/electron/main.ts'主进程入口
preloadstring | string[]'src/electron/preload.ts'Preload 脚本,可多入口
rendererstring'index.html'渲染进程入口 HTML
mainFormat'cjs' | 'esm''cjs'主进程输出格式(ESM 需 Electron 41+)
preloadFormat'cjs' | 'esm''cjs'Preload 输出格式
nodeTargetstring'node22'主/preload 的 Node 版本目标
autoRestartbooleantruedev 模式下自动重启 Electron
minVersionnumber41允许的最低 Electron 大版本
electronPathstring''自定义 Electron 可执行文件路径
electronArgsstring[][]传递给 Electron 的 CLI 参数
externalstring[]['electron']主/preload 外部化依赖