Просмотр исходного кода

fix: 修复小程序发布脚本构建工作目录问题

问题:
- 发布脚本在根目录执行 `cd mini && pnpm taro build` 命令
- 导致 webpack 解析 tailwindcss 和路径别名 @/ 时失败

修复:
- 直接使用 cwd 参数指向小程序目录,而非命令中 cd
- 简化构建命令,移除不必要的 cd 操作
- 添加构建日志输出(工作目录、环境变量)

文档:
- 更新 FAQ 说明问题已修复
- 保留 --no-build 作为备用方案

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 3 недель назад
Родитель
Сommit
8954ecc980

+ 15 - 0
.claude/skills/weapp-publish/references/faq.md

@@ -8,6 +8,21 @@
 
 **A**: 检查密钥文件路径是否正确,密钥是否匹配对应的 AppID。
 
+### Q: 构建时提示找不到模块(如 `tailwindcss` 或 `@/` 路径别名)
+
+**A**: **此问题已在脚本中修复**(2025-03-18)。如果仍然遇到,请使用 `--no-build` 参数作为备用方案。
+
+**备用方案**:
+```bash
+# 1. 进入小程序目录手动构建
+cd mini
+NODE_ENV=production pnpm taro build --type weapp
+
+# 2. 返回根目录,使用 --no-build 发布
+cd ..
+pnpm run publish:enterprise --no-build
+```
+
 ### Q: 如何设置体验版
 
 **A**: 发布成功后,登录小程序后台"版本管理",将指定版本设置为体验版。

+ 1 - 1
.claude/skills/weapp-publish/references/usage.md

@@ -43,7 +43,7 @@ pnpm run publish:talent:dev --build
 
 ### 体验版 (experience)
 - **默认执行构建**:确保发布的是最新代码
-- 跳过构建:添加 `--no-build` 参数(不推荐
+- 跳过构建:添加 `--no-build` 参数(适用于已手动构建的情况
 
 ### 输出路径
 - 开发版:`dist/weapp/development/`

+ 10 - 2
.claude/skills/weapp-publish/scripts/publish-weapp.js

@@ -46,10 +46,16 @@ function getBuildConfig(config, action) {
   // 根据模式设置对应的 NODE_ENV
   // 这样构建输出目录和上传目录就能匹配了
   const nodeEnv = mode === 'development' ? 'development' : 'production'
-  const buildCmd = `cd ${config.dir} && NODE_ENV=${nodeEnv} pnpm taro build --type weapp`
+  // 小程序目录的绝对路径,用于 execSync 的 cwd 参数
+  const miniDir = path.resolve(PROJECT_ROOT, config.dir)
+  // 构建命令不需要 cd,通过 cwd 参数指定工作目录
+  const buildCmd = `NODE_ENV=${nodeEnv} pnpm taro build --type weapp`
 
   return {
     ...config,
+    mode,
+    nodeEnv,
+    miniDir,
     projectPath: path.resolve(PROJECT_ROOT, `${config.dir}/${config.distPath}/${mode}`),
     buildCmd,
   }
@@ -60,8 +66,10 @@ function getBuildConfig(config, action) {
  */
 function buildMiniProject(config) {
   console.log(`\n🔨 正在构建 ${config.name}...`)
+  console.log(`   工作目录: ${config.miniDir}`)
+  console.log(`   环境变量: NODE_ENV=${config.nodeEnv}`)
   try {
-    execSync(config.buildCmd, { stdio: 'inherit', cwd: PROJECT_ROOT, shell: true })
+    execSync(config.buildCmd, { stdio: 'inherit', cwd: config.miniDir, shell: true })
     console.log(`✅ ${config.name} 构建完成`)
   } catch (error) {
     console.error(`❌ ${config.name} 构建失败`)

+ 1 - 1
mini/package.json

@@ -1,6 +1,6 @@
 {
   "name": "mini",
-  "version": "0.0.42",
+  "version": "0.0.48",
   "private": true,
   "description": "",
   "templateInfo": {