由于我丑陋的操作,被迫npm上传插件自动化脚本(shell)
贴一下全部代码先:github
前几天写了个vue3插件。后来发布npm感觉需要操作很多傻傻又重复的命令...
注:我一直保持认为有更好的命令去操作!!在这篇文章,你可以了解到简单的shell脚本编写,可以了解到npm版本迭代的快捷命令(再也不用手动修改版本号更新啦!!!),当然!还可以学到我丑陋的操作。
请看我丑陋的操作。🔽
我的场景:由于每次打包会把之前的打包过文件下的package.json
文件覆盖掉,我要每次去备份package.json
........因为里面有上传npm的信息。我坚信:有相关命令可以这样做(可以在评论区帮我一把)。所以我不想麻烦:我写了一款Bash脚本去自动化备份、打包、上传我的包
正题:shell编程,也就是我们常说的Bash脚本(自动化脚本)
总体逻辑
- 备份之前写好的
package.json
文件和README.md
文件 - 执行写好的打包命令
- 将备份的
package.json
文件和README.md
文件重新cp到你的dist目录
,当然你可能有自己的名字 - 执行发布命令,选择版本大小的迭代,例如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