likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 46

贴一下全部代码先: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 秒]"

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

转载自:https://juejin.cn/post/7256985832312897596
评论
请登录