| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { exec } from 'node:child_process'
- import fs from 'node:fs'
- import path from 'node:path'
- import process from 'node:process'
- /**
- * 打开开发者工具
- */
- function _openDevTools() {
- const platform = process.platform // darwin, win32, linux
- const { UNI_PLATFORM } = process.env // mp-weixin, mp-alipay
- const uniPlatformText = UNI_PLATFORM === 'mp-weixin' ? '微信小程序' : UNI_PLATFORM === 'mp-alipay' ? '支付宝小程序' : '小程序'
- // 项目路径(构建输出目录)
- const projectPath = path.resolve(process.cwd(), `dist/dev/${UNI_PLATFORM}`)
- // 检查构建输出目录是否存在
- if (!fs.existsSync(projectPath)) {
- console.log(`❌ ${uniPlatformText}构建目录不存在:`, projectPath)
- return
- }
- console.log(`🚀 正在打开${uniPlatformText}开发者工具...`)
- // 根据不同操作系统执行不同命令
- let command = ''
- if (platform === 'darwin') {
- // macOS
- if (UNI_PLATFORM === 'mp-weixin') {
- command = `/Applications/wechatwebdevtools.app/Contents/MacOS/cli -o "${projectPath}"`
- }
- else if (UNI_PLATFORM === 'mp-alipay') {
- command = `/Applications/小程序开发者工具.app/Contents/MacOS/小程序开发者工具 --p "${projectPath}"`
- }
- }
- else if (platform === 'win32' || platform === 'win64') {
- // Windows
- if (UNI_PLATFORM === 'mp-weixin') {
- command = `E:\developmentKit\WeChatDeveloperTools\微信web开发者工具\cli.bat -o "${projectPath}"`
- }
- }
- else {
- // Linux 或其他系统
- console.log('❌ 当前系统不支持自动打开微信开发者工具')
- return
- }
- exec(command, (error, stdout, stderr) => {
- if (error) {
- console.log(`❌ 打开${uniPlatformText}开发者工具失败:`, error.message)
- console.log(`💡 请确保${uniPlatformText}开发者工具服务端口已启用`)
- console.log(`💡 可以手动打开${uniPlatformText}开发者工具并导入项目:`, projectPath)
- return
- }
- if (stderr) {
- console.log('⚠️ 警告:', stderr)
- }
- console.log(`✅ ${uniPlatformText}开发者工具已打开`)
- if (stdout) {
- console.log(stdout)
- }
- })
- }
- export default function openDevTools() {
- // 首次构建标记
- let isFirstBuild = true
- return {
- name: 'uni-devtools',
- writeBundle() {
- if (isFirstBuild && process.env.UNI_PLATFORM?.includes('mp')) {
- isFirstBuild = false
- _openDevTools()
- }
- },
- }
- }
|