贴一下全部代码先: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 秒]"
最后,敬大家。有用/有趣可以点一个赞吗?
© 版权声明
文章版权归作者所有,未经允许请勿转载,侵权请联系 admin@trc20.tw 删除。
THE END