2024年最全前端自动化部署的深度实践(1),面试真题及答案

文末

从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。

个人将这段时间所学的知识,分为三个阶段:

第一阶段:HTML&CSS&JavaScript基础

第二阶段:移动端开发技术

第三阶段:前端常用框架

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;

  • 大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。

“devDependencies”: {

“cz-conventional-changelog”: “^3.1.0”

},

“config”: {

“commitizen”: {

“path”: “./node_modules/cz-conventional-changelog”

}

}

git commit这一步用git cz替代cz就是指commitizen,通过交互式命令行完成commit操作。

PS D:\robin\frontend\spa-blog-frontend> git cz

cz-cli@4.0.3, cz-conventional-changelog@3.1.0

? Select the type of change that you’re committing: feat: A new feature

? What is the scope of this change (e.g. component or file name): (press enter to skip) 支持自动部署

? Write a short, imperative tense description of the change (max 86 chars):

(37) 结合conventional-changelog,配合部署脚本完成部署任务

? Provide a longer description of the change: (press enter to skip)

? Are there any breaking changes? No

? Does this change affect any open issues? No

[master ee41f35] feat(支持自动部署): 结合conventional-changelog,配合部署脚本完成部署任务

3 files changed, 15 insertions(+), 3 deletions(-)

处理版本号,更新CHANGELOG


接着我们要更新npm包的版本号,结合npm versionconventional-changelog使用,可以同时更新CHANGELOG.md

好的,我们先准备好脚本:

“scripts”: {

“start”: “vue-cli-service serve”,

“build”: “vue-cli-service build”,

“deploy”: “node deploy”,

“version”: “conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md”,

“postversion”: “npm run deploy”

}

根据实际版本情况选择更新patch/minor/major版本。假设我们更新的是minor版本号,那么操作命令如下:

npm version minor -m ‘特性版本更新’

执行这条命令会更新package.json中的version字段,

同时会执行conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md,更新CHANGELOG.md

执行完这条命令后,可以看到CHANGELOG.md已经被修改了。

CHANGELOG自动更新

npm钩子触发部署脚本


通过postversion钩子触发部署脚本node deploy,开始进行部署工作。deploy.js文件内容如下:

const { execFile } = require(‘child_process’);

const version = process.env.npm_package_version;

execFile(‘deploy.sh’, [version], { shell: true }, (err, stdout, stderr) => {

if (err) {

throw err;

}

console.log(stdout);

});

这里利用了nodejschild_process模块执行子进程,调用了execFile执行了 deploy.sh,并将npm包版本号作为参数传递给了deploy.sh

deploy.sh文件内容如下:

#!/bin/bash

npm run build

htmldir=“/usr/share/nginx/html”

uploadbasedir=“${htmldir}/upgrade_blog_vue_ts”

appenddir=$1

uploaddir=“ u p l o a d b a s e d i r / {uploadbasedir}/ uploadbasedir/{appenddir}”

projectdir=“/usr/share/nginx/html/blog_vue_ts”

scp -r ./dist/. txcloud:${uploaddir}

ssh txcloud > /dev/null 2>&1 << eeooff

ln -snf ${uploaddir} ${projectdir}

exit

eeooff

echo done

以上命令主要做的事情是:

  • npm run build执行构建任务

  • 将构建得到的dist文件夹中的内容通过scp传输到服务器,通过版本号区分各个版本。

  • nginx配置的是监听80端口,指向/usr/share/nginx/html/blog_vue_ts,而我通过软连接将blog_vue_ts再次指向到upgrade_blog_vue_ts下的版本目录,如upgrade_blog_vue_ts/0.5.4。每次发布版本时,以上脚本会修改软连接,指向目标版本,如upgrade_blog_vue_ts/0.6.0,完成版本过渡。

我这里使用了软连接改进了之前的部署脚本,既可以在服务器保留各个历史版本文件夹,也不用考虑处理index.html与静态资源分离的问题。

强烈建议结合自动化部署的一小步,前端搬砖的一大步这篇文章一起看。

lrwxrwxrwx 1 root root 47 Feb 3 21:35 blog_vue_ts -> /usr/share/nginx/html/upgrade_blog_vue_ts/0.6.0

linux服务器项目版本文件夹

如果要回退版本,也可以通过修改软连接的方式实现,还是比较方便的。

推送到remote


最后别忘了把代码push到远程仓库。

git push

更新日志changelog查看也变得很方便了,修改了什么内容一目了然,并且可以直接跳转到commit历史,issue等。

github上的changelog

番外

=====================================================================

可以看到,我是通过deploy.js调用了deploy.sh。之前本想直接在npm scripts中调用deploy.sh并传入版本号参数的,但是试了几种写法都不行,这里也记录一下。

“deploy”: “deploy.sh npm_package_version”

“deploy”: “deploy.sh $npm_package_version”

看起来在npm scripts中调用sh脚本时,只能写字面量参数,传变量作为参数好像行不通。

下面这种字面量参数写法是可以的,但是就有点呆呆的感觉了,而且与自动化部署的主题不符。

“deploy”: “deploy.sh 0.6.0”

最后

你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

我特地针对初学者整理一套前端学习资料

前端路线图

vue.js的36个技巧

域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

我特地针对初学者整理一套前端学习资料

[外链图片转存中…(img-CUlUr78c-1715677128507)]

[外链图片转存中…(img-lG5vZKWT-1715677128508)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值