由于我丑陋的操作,被迫npm上传插件自动化脚本(shell)

贴一下全部代码先:github

前几天写了个vue3插件。后来发布npm感觉需要操作很多傻傻又重复的命令…

注:我一直保持认为有更好的命令去操作!!
在这篇文章,你可以了解到简单的shell脚本编写,可以了解到npm版本迭代的快捷命令(再也不用手动修改版本号更新啦!!!),当然!还可以学到我丑陋的操作。

请看我丑陋的操作。?

我的场景:由于每次打包会把之前的打包过文件下的package.json文件覆盖掉,我要每次去备份package.json……..因为里面有上传npm的信息。我坚信:有相关命令可以这样做(可以在评论区帮我一把)。所以我不想麻烦:我写了一款Bash脚本去自动化备份、打包、上传我的包


正题:shell编程,也就是我们常说的Bash脚本(自动化脚本)

程序员的快乐不就来自‘自动化’吗?🙂

总体逻辑

  1. 备份之前写好的package.json文件和README.md文件
  2. 执行写好的打包命令
  3. 将备份的package.json文件和README.md文件重新cp到你的dist目录,当然你可能有自己的名字
  4. 执行发布命令,选择版本大小的迭代,例如1.0.0是升级到1.0.1?还是1.1.0?还是2.0.0?

第一步

要检查有没有test目录,没有自动去创建,并执行下一步;

# 检查是否存在 test 文件夹
if [ ! -d "src/test" ]; then
  read -p "?[test 文件夹不存在,是否创建?(y/n)] " create_test_folder
  if [ "$create_test_folder" == "y" ]; then
    title "?[正在创建 test 文件夹...########]"
    mkdir -p src/test
    echo "?[test 文件夹创建成功?]"
  else
    echo "❎[脚本已退出]"
    echo '❎中途退出,请重新运行 "bash package.sh"'
    exit
  fi
fi

拷贝命令到test文件夹下,备份;

if [ -d "colinbar" ]; then
  # 拷贝 colinbar 文件夹下的 package.json 到 src 目录
  title "?[正在备份本地文件「package.json」...########]"
  cp colinbar/package.json  src/test/
  echo "?[备份成功?]"

  title "?[正在备份本地文件「README.md」...########]"
  cp  colinbar/README.md src/test
  echo "?[备份成功?]"
fi

第二步

打包命令;当然如果上一步没有colinbar文件,说明没有打包,我的全部代码里有写怎么做

# 运行打包命令
title "?[打包过程中...########]"
npm run package 
echo "?[打包成功?]"

第三步

拿备份的文件移动到打包目录下;

# 将移动到 src 目录下的 package.json 重新移动并覆盖到 colinbar 下
title "?[覆盖远端文件「package.json」...########]"
cp src/test/package.json colinbar/
echo "?[覆盖成功?]"

title "?[覆盖远端文件「README.md」...########]"
cp src/test/README.md colinbar/
echo "?[覆盖成功?]"

第四步

发布;发布的时候要选择版本号迭代,告别手动更替版本号的蠢;

read -p "是否要npm发布?(y/n): " publish_option

if [ "$publish_option" == "y" ]; then
  title "?正在发布..."
  cd colinbar
  read -p "需要小、中、大版本的迭代?(1/2/3): " version
    if [ "$version" == 1 ]; then
      npm version patch
      echo '已迭代,正在发布...#######'
    elif [ "$version" == 2 ]; then
      npm version minor
      echo '已迭代,正在发布...#######'
    elif [ "$version" == 3 ]; then
      npm version major
      echo '已迭代,正在发布...#######'
    fi
  npm publish
  echo "?发布完成!"
elif [ "$publish_option" == "n" ]; then
  echo "❎发布已取消。"
else
  echo "❎无效的选项,发布已取消。"
fi

结尾

可以选择记录一下脚本执行时间;美化全部进程的话可以看我的地址**,**如果喜欢可以点个star支持一下呀

end_time=$(date +%s)
execution_time=$((end_time - start_time))
echo "?[全部执行完毕!请登录网址:'https://www.npmjs.com/package/colinbar',查看包信息是否有误。]"
echo "???[此次自动化上传脚本执行时间共计 $execution_time 秒]"

最后,敬大家。有用/有趣可以点一个赞吗?

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYzZXJlj' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片