配置发布时删除console.log,开发环境也没log了

配置发布时删除console.log,开发环境也没log了

开发环境 版本号 项目创建方式
Windows 11 专业版 HBuilderX

产品分类:uniapp/小程序/微信

PC开发环境操作系统:  
Windows  

HBuilderX类型:  
正式  

HBuilderX版本号:  
4.57  

第三方开发者工具版本号:  
1.06.2503281win32-x64  

基础库版本号:  
3.8.2  

示例代码:

```javascript
import { defineConfig } from 'vite';  
import uni from '[@dcloudio](/user/dcloudio)/vite-plugin-uni';  

export default defineConfig({  
    plugins: [uni()],  
    build: {  
        minify: 'terser',  
        terserOptions: {  
            compress: {  
                drop_console: true,  
            },  
        },  
    },  
});  

操作步骤: hbuildx创建初始项目,配置vite.config.js后,使用菜单运行到微信小程序(并非 发行)

预期结果: 只在发行时删除log

实际结果: 开发模式也没有log

bug描述: 根据官方文档 vite-config
配置了如下代码,发现点击 菜单-运行-运行到小程序模拟器-微信开发工具时,也没有log打印了。

import { defineConfig } from 'vite';  
import uni from '[@dcloudio](/user/dcloudio)/vite-plugin-uni';  

export default defineConfig({  
    plugins: [uni()],  
    build: {  
        minify: 'terser',  
        terserOptions: {  
            compress: {  
                drop_console: true,  
            },  
        },  
    },  
});  

尝试添加

serve:{  
        terserOptions: {  
            compress: {  
                drop_console: false,  
            },  
        },  
    }

dev:{  
        terserOptions: {  
            compress: {  
                drop_console: false,  
            },  
        },  
    }

发现也都无效


5 回复

微信小程序开发环境也要打包,产物放到开发者工具里面运行。你想决定是否留日志打印可以通过 process.env.NODE_ENV 来判断,如果是 development 就是开发环境,发行就是 production

// vite.config.js
import {
defineConfig
} from “vite”
import uni from ‘@dcloudio/vite-plugin-uni’;

const config = process.env.NODE_ENV === ‘development’ ? {
plugins: [uni()]
} : {
plugins: [uni()],
build: {
minify: ‘terser’,
terserOptions: {
compress: {
drop_console: true,
},
},
},
}
export default defineConfig(config);


好的感谢

vite.config.ts
import type { Plugin } from ‘vite’;
import { defineConfig } from ‘vite’;
import uni from ‘@dcloudio/vite-plugin-uni’;
import path from ‘path’;
import fs from ‘fs’;

// https://vitejs.dev/config/
export default defineConfig({
server: {
fs: {
allow: [path.resolve(__dirname, ‘h5’)],
},
headers: {
‘Cross-Origin-Opener-Policy’: ‘same-origin’,
‘Cross-Origin-Embedder-Policy’: ‘require-corp’,
// ‘Content-Type’: ‘application/wasm’,
},
proxy: {
‘/h5/sqlite3.wasm’: {
bypass: (req, res, options) => {
const filePath = path.resolve(__dirname, ‘public/h5/sqlite3.wasm’);
if (fs.existsSync(filePath)) {
res.statusCode = 200;
res.setHeader(‘Content-Type’, ‘application/wasm’);
fs.createReadStream(filePath).pipe(res);
} else {
res.statusCode = 404;
res.end(‘File not found’);
}
},
},
},
},
build: {
minify: ‘terser’,
terserOptions: {
compress: {
drop_console: true,
},
},
},
plugins: [uni()],
});

package.json
{
“name”: “uni-preset-vue”,
“version”: “0.0.0”,
“scripts”: {
“dev:custom”: “uni -p”,
“dev”: “uni”,
“dev:h5:ssr”: “uni --ssr”,
“dev:mp-alipay”: “uni -p mp-alipay”,
“dev:mp-baidu”: “uni -p mp-baidu”,
“dev:mp-jd”: “uni -p mp-jd”,
“dev:mp-kuaishou”: “uni -p mp-kuaishou”,
“dev:mp-lark”: “uni -p mp-lark”,
“dev:mp-qq”: “uni -p mp-qq”,
“dev:mp-toutiao”: “uni -p mp-toutiao”,
“dev:mp-weixin”: “uni -p mp-weixin”,
“dev:mp-xhs”: “uni -p mp-xhs”,
“dev:quickapp-webview”: “uni -p quickapp-webview”,
“dev:quickapp-webview-huawei”: “uni -p quickapp-webview-huawei”,
“dev:quickapp-webview-union”: “uni -p quickapp-webview-union”,
“build:custom”: “uni build -p”,
“build:h5”: “uni build”,
“build:h5:ssr”: “uni build --ssr”,
“build:mp-alipay”: “uni build -p mp-alipay”,
“build:mp-baidu”: “uni build -p mp-baidu”,
“build:mp-jd”: “uni build -p mp-jd”,
“build:mp-kuaishou”: “uni build -p mp-kuaishou”,
“build:mp-lark”: “uni build -p mp-lark”,
“build:mp-qq”: “uni build -p mp-qq”,
“build:mp-toutiao”: “uni build -p mp-toutiao”,
“build:mp-weixin”: “uni build -p mp-weixin”,
“build:mp-xhs”: “uni build -p mp-xhs”,
“build:quickapp-webview”: “uni build -p quickapp-webview”,
“build:quickapp-webview-huawei”: “uni build -p quickapp-webview-huawei”,
“build:quickapp-webview-union”: “uni build -p quickapp-webview-union”,
“type-check”: “vue-tsc --noEmit”,
“build”: “uni build -p app”,
“format”: "prettier --write “.//.{ts,tsx,js,jsx,vue,css,scss,json,md}"",
“prepare”: “husky install”,
“format:fix”: “prettier --write . && tsc --noEmit || true”,
“lint”: “eslint”
},
“dependencies”: {
@dcloudio/uni-app”: “3.0.0-4060420250429001”,
@dcloudio/uni-app-harmony”: “3.0.0-4060420250429001”,
@dcloudio/uni-app-plus”: “3.0.0-4060420250429001”,
@dcloudio/uni-components”: “3.0.0-4060420250429001”,
@dcloudio/uni-h5”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-alipay”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-baidu”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-harmony”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-jd”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-kuaishou”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-lark”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-qq”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-toutiao”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-weixin”: “3.0.0-4060420250429001”,
@dcloudio/uni-mp-xhs”: “3.0.0-4060420250429001”,
@dcloudio/uni-quickapp-webview”: “3.0.0-4060420250429001”,
“@sqlite.org/sqlite-wasm”: “3.49.1-build4”,
“kysely-wasm”: “^1.2.1”,
“vue”: “^3.5.13”,
“vue-i18n”: “^9.14.4”
},
“devDependencies”: {
@dcloudio/types”: “^3.4.15”,
@dcloudio/uni-automator”: “3.0.0-4060420250429001”,
@dcloudio/uni-cli-shared”: “3.0.0-4060420250429001”,
@dcloudio/uni-stacktracey”: “3.0.0-4060420250429001”,
@dcloudio/vite-plugin-uni”: “3.0.0-4060420250429001”,
“@typescript-eslint/eslint-plugin”: “^8.31.1”,
“@typescript-eslint/parser”: “^8.31.1”,
“@vue/runtime-core”: “^3.5.13”,
“@vue/tsconfig”: “^0.1.3”,
“eslint”: “^9.25.1”,
“husky”: “^9.1.7”,
“kysely”: "workspace:
",
“lint-staged”: “^15.5.1”,
“prettier”: “^3.5.3”,
“ts-prune”: “^0.10.3”,
“typescript”: “^4.9.5”,
“vite”: “5.2.8”,
“vue-tsc”: “^1.8.27”
},
“lint-staged”: {
"src/
/*.{ts,tsx,js,jsx,vue,css,scss,json,md}”: [
“prettier --write”
]
}
} pnpm build 之后
Run method: open HBuilderX, import dist\build\app run.
日志没有删除

感谢反馈,你手动替换一下 packages/uni-cli-shared/dist/vite/plugins/console.js 为 附件中的文件

问题出在配置方式上。在Vite中,build配置项只会在生产构建时生效,但你在开发模式下也看到console被移除,说明配置可能被错误应用了。

正确的做法是区分开发和生产环境:

import { defineConfig } from 'vite';
import uni from '@dcloudio/vite-plugin-uni';

export default defineConfig(({ mode }) => ({
  plugins: [uni()],
  build: mode === 'production' ? {
    minify: 'terser',
    terserOptions: {
      compress: {
        drop_console: true
      }
    }
  } : {}
}));

或者使用环境变量判断:

export default defineConfig({
  plugins: [uni()],
  build: process.env.NODE_ENV === 'production' ? {
    minify: 'terser',
    terserOptions: {
      compress: {
        drop_console: true
      }
    }
  } : {}
});
回到顶部