如何在Rollup(含Vite构建)中禁用ANSI转义码输出?
如何禁用Vite生产构建时的ANSI转义码输出?
完全可以实现禁用ANSI转义码输出,同时支持通过环境变量区分本地和CI构建场景,以下是几种可行方案:
1. 直接使用命令行参数
Vite内置了--no-color参数,执行构建时添加该参数即可输出纯文本日志:
vite build --no-color
2. 利用环境变量自动适配CI场景
大部分CI平台(如Jenkins)会自动设置CI=true环境变量,你可以在package.json的脚本中添加条件判断,实现本地构建保留颜色、CI构建自动禁用:
Unix/Linux/macOS环境
"scripts": { "build": "[ \"$CI\" = \"true\" ] && vite build --no-color || vite build" }
Windows环境(PowerShell)
"scripts": { "build": "if ($env:CI -eq 'true') { vite build --no-color } else { vite build }" }
或者拆分出单独的CI构建命令,在Jenkins中直接执行:
"scripts": { "build": "vite build", "build:ci": "vite build --no-color" }
3. 通过Vite配置文件全局控制
如果你需要在配置层面统一处理,可以在vite.config.js中根据环境变量动态调整日志输出:
import { defineConfig } from 'vite'; export default defineConfig({ // 控制Vite日志是否带颜色 logger: { hasColoredOutput: !process.env.CI }, build: { rollupOptions: { // 处理Rollup的警告日志,确保CI环境输出纯文本 onwarn(warning, warn) { if (process.env.CI) { console.log(warning.message); } else { warn(warning); } } } } });
效果验证
配置完成后,CI环境下的构建日志会自动去除ANSI转义码,输出示例如下:
vite v4.0.3 building for production... transforming... Missing export "createServer" has been shimmed in module "__vite-browser-external". Missing export "Socket" has been shimmed in module "__vite-browser-external". ✓ 3098 modules transformed. rendering chunks... computing gzip size... build/assets/editor-side-line-straight-3b1dfbb4.svg 0.41 kB build/assets/squiggle-cb9fe55e.svg 0.47 kB build/assets/markdown-8b37fca1.svg 0.58 kB build/assets/shell-40c17629.svg 0.60 kB build/assets/remove-899a6ae3.svg 0.65 kB
内容的提问来源于stack exchange,提问作者Mike Lischke
相关产品推荐
相关产品推荐

