首页 » 前端 » Vue.js » 正文

yarn build.sh

发布者:站点默认
2023/03/26 浏览数(614) 分类:Vue.js yarn build.sh已关闭评论

概要

yarn build 后自动生成并在 finder 中高亮 .tgz 压缩包,压缩包名含项目名称、生成日期、git commit id,并提示是否将生成的 dist 和 .tgz 删除。

压缩包名格式:《某可视化大屏_production_20230326214235_52905e7.tgz》

依赖:macOS,fish shell

用法

yb                         # 仅 yarn build,NODE_ENV=production
yb production              # 仅 yarn build,NODE_ENV=production
yb development             # 仅 yarn build,NODE_ENV=development
yb production 某项目数据大屏 # yarn build 后会生成前缀为“某项目数据大屏”的 tgz 压缩包

代码

# yb.fish
function yb --description 'yarn build sth.'
  #if test (count $argv) -lt 1
  #  echo 'yarn build [{NODE_ENV}] [{PROJECT_CODE}]'
  #  echo 'Usage: '$_
  #  echo '       '$_' test|preview'
  #  echo '       '$_' test|preview project_code'
  #  return
  #end

  set --function node_env 'production'
  set --function project_code 'dist'

  if set --query argv[1]
    set --function node_env (string lower $argv[1])
  end 

  if set --query argv[2]
    set --function project_code $argv[2]
  end 

  if test "$node_env" = "production"
    set --function buildParam "build"
  else
    set --function buildParam "build:$node_env"
  end 

  yarn $buildParam

  if test $status -eq 0
    # 找待打包目录
    set --function package_name {$project_code}_{$node_env}_$(date '+%Y%m%d%H%M%S')_$(string sub --length 7 $(git rev-pa
    set --function folder dist_$node_env
    if not test -d $folder
      set --function folder dist
      if not test -d $folder
        echo (set_color red)$folder" not found"(set_color normal)
        return
      end
    end
    # 打包
    if set --query argv[2]
      tar -zcvf \
        $package_name \
        $folder \
        ;and open -R ./$package_name
        #;and sleep 2
        #;and osascript -e '
        #  tell application "System Events" to tell process "Finder"
        #    set frontmost to true
        #    tell menu bar item "文件" of menu bar 1
        #      #click menu item "共享" of menu "文件"
        #      #click menu item "发送到微信" of menu "共享" of menu item "共享" of menu "文件"
        #      tell menu item "共享" of menu "文件"
        #        click menu item "发送到微信" of menu "共享"
        #      end tell
        #    end tell
        #  end tell
        #'
      if test $status -eq 0
        # 删除打包后的压缩包
        set --function full_package_path $PWD"/"$package_name
        echo (set_color yellow)"package: "(string replace -r '^'"$HOME"'($|/)' '~$1' $full_package_path)(set_color normal)
        read be_delete -ft -c "yes" -p "echo (set_color yellow)'delete '$package_name' [yes/no]'(set_color normal)'> '"
        if test "$be_delete" = "yes"
          rm -rf $full_package_path
          if test $status -eq 0
            echo (set_color green)"package "$package_name" deleted"(set_color normal)
          end
        else
          echo (set_color yellow)"Command DELETE package is canceled"(set_color normal)
        end
      end
    end
    # 删除待打包的目录
    if test $status -eq 0
      # 删除编译后的目录
      set --function full_folder_path $PWD"/"$folder
      echo (set_color yellow)"dist folder: "(string replace -r '^'"$HOME"'($|/)' '~$1' $full_folder_path)(set_color norm
      read be_delete -ft -c "yes" -p "echo (set_color yellow)'delete '$folder' folder[yes/no]'(set_color normal)'> '"
      if test "$be_delete" = "yes"
        rm -rf $full_folder_path
        if test $status -eq 0
          echo (set_color green)"folder "$folder" deleted"(set_color normal)
        end
      else
        echo (set_color yellow)"Command DELETE folder is canceled"(set_color normal)
      end
    end
  else
    echo (set_color red)"Command TAR is canceled"(set_color normal)
  end

end
点击返回顶部
  1. 留言
  2. 联系方式