无需等待Vue Release发布,就能在项目中体验最新版

news/2024/10/24 8:40:14

前言

两个月前尤大在Vue 仓库中引入了 pkg.pr.new,有了这个后Vue仓库中的每个commit或者PR都会自动触发一个新的发布,我们就可以在项目中体验最新版本的Vue啦。

关注公众号:【前端欧阳】,给自己一个进阶vue的机会

如何体验最新版本Vue

我们先来看看如何使用最新版本Vue。很简单,在Vue的GitHub上面去找一个open状态的Pull request。如下图:
open-pr

然后在这个PR中可以看到一个名为pkg-pr-new的机器人发布的评论,如下图:
bot

因为Vue是模块化设计,项目中的每个模块都会被发布成一个包。这些模块的名字都是以@vue开头的,并且支持单独使用。

一般我们都是使用整个Vue中的功能,所以在项目中使用Vue一般都是:

pnpm add vue

这样就是从npm中下载Vue的包的方法。

细心的小伙伴已经发现了,在图中pnpm add的不是vue,而是一个链接:

pnpm add https://pkg.pr.new/vue@12227

因为 pkg.pr.new生成的Vue包是放到了pkg.pr.new自己网站上面的。不会发布到npm中, pkg.pr.new和npm是完全隔离的。

还有一点值得注意的是,当PR被关闭或者合并后,这个PR对应的pkg.pr.new站点中的包就会被清理。

Vue是如何集成pkg.pr.new的?

在Vue源码中可以看到有个.github/workflows文件夹,如下图:
ci

这个.github/workflows文件夹中包含一堆以.yml结尾的文件,这些文件是用来定义 GitHub Actions 工作流程的。

GitHub Actions 是 GitHub 提供的持续集成和持续部署(CI/CD)服务。

比如上面这种图中的ci.yml文件就定义了当代码push到Vue仓库中的任何一个分支,或者是发起一个到main 或 minor 分支的 Pull request 时,就会执行ci.yml文件中定义的jobs(任务)。

ci.yml的完整代码如下:

name: 'ci'
on:push:branches:- '**'tags:- '!**'pull_request:branches:- main- minorjobs:test:if: ${{ ! startsWith(github.event.head_commit.message, 'release:') && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository) }}uses: ./.github/workflows/test.ymlcontinuous-release:if: github.repository == 'vuejs/core'runs-on: ubuntu-lateststeps:- name: Checkoutuses: actions/checkout@v4- name: Install pnpmuses: pnpm/action-setup@v4- name: Install Node.jsuses: actions/setup-node@v4with:node-version-file: '.node-version'registry-url: 'https://registry.npmjs.org'cache: 'pnpm'- name: Install depsrun: pnpm install- name: Buildrun: pnpm build --withTypes- name: Releaserun: pnpx pkg-pr-new publish --compact --pnpm './packages/*'

这个ci.yml定义了一个名为ci的工作流,触发条件就是上面的on字段定义的内容:当代码push到Vue仓库中的任何一个分支,或者是发起一个到main 或 minor 分支的 Pull request 时。

工作流中的内容主要包含:检出代码、安装 pnpm、设置 Node.js 环境、安装依赖、构建项目、发布包。

pkg.pr.new是在build命令打包完成后工作的,执行的命令在是ci.yml文件的末尾:

pnpx pkg-pr-new publish --compact --pnpm './packages/*'

执行这个命令后会将packages文件夹中的所有模块都发布到 pkg.pr.new站点上面。

我们也可以在GitHub网站的Actions中看到ci.yml工作流的执行日志。

先在所有的工作流中找到名为ci的工作流,如下图:
actions

在actions页面可以看到有很多工作流,工作流的名字就是ci文件中定义的name字段。ci.yml文件中定义的name就是ci

在右侧通过Pull request的编号,就可以找到这个Pull request所触发的ci工作流,点进去就是这样的:
release

从上图中可以看到在执行pkg-pr-new publish时将包发布到pkg.pr.new站点的日志了。

总结

Vue 引入了 pkg.pr.new后,每个commit或者PR都会自动触发一个新的发布到pkg.pr.new网站上面。并且和npm站点上面发布的包不会冲突,我们也可以不用等待Vue发布就可以体验最新版本的Vue啦。

关注公众号:【前端欧阳】,给自己一个进阶vue的机会

另外欧阳写了一本开源电子书vue3编译原理揭秘,看完这本书可以让你对vue编译的认知有质的提升。这本书初、中级前端能看懂,完全免费,只求一个star。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/75342.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

博客初始设置

声明 本文属于本人《从零开始美化博客》系列,系列详细信息请访问 我的博客。你可以在我的 github 仓库 中查看完整代码,或是在文末查看本文相关代码,相关代码遵循 MIT 协议,你可以在 github 仓库下的 LICENSE 文件 查看详细协议。你可以在 这里 预览最新进展中的博客页面。…

10月24日 交易计划

1. 苯乙烯8430附近的多单

Z-Library镜像网站入口,网页版正式回归了

Z-Library图书馆介绍 Z-Library图书馆是全球最大的在线图书馆之一,拥有超过1400万本书籍和8000万篇文章,涵盖了众多领域的学术文献和文学作品。该图书馆致力于为广大读者提供免费、便捷的电子资源服务,让读者能够轻松获取所需的图书和文献。其数字档案库资源丰富,更新及时,…

彻底搞懂ScheduledThreadPoolExecutor

前言 项目中经常会遇到一些非分布式的调度任务,需要在未来的某个时刻周期性执行。实现这样的功能,我们有多种方式可以选择:Timer类, jdk1.3引入,不推荐。它所有任务都是串行执行的,同一时间只能有一个任务在执行,而且前一个任务的延迟或异常都将会影响到之后的任务。可能…

如何查看织梦CMS网站源码中的数据库信息

1. 定位配置文件文件路径:织梦CMS V5.1:include/config_base.php 织梦CMS V5.3 及以上版本:data/common.inc.php2. 编辑配置文件使用文本编辑器打开 data/common.inc.php 文件,找到数据库连接配置部分。配置文件的内容通常如下所示:<?php // 数据库连接信息 $cfg_dbho…

PbootCMS错误提示:文件上传失败

错误提示:文件上传失败解决方案:检查上传文件夹(通常位于 /upload/)的写权限,确保Web服务器有写入权限。 检查PHP配置文件(php.ini)中的 upload_max_filesize 和 post_max_size 是否足够大。 检查文件类型和大小限制是否符合要求。扫码添加技术【解决问题】专注中小企业…

如何修改网站后台的地址?公司网站被修改怎么改?

如果公司的网站被未经授权的人员修改,你需要迅速采取措施来恢复网站并加强安全性。以下是一些步骤: 1. 确认问题检查网站:确认哪些部分被修改,记录下具体的改动。 通知相关人员:立即通知IT部门或负责网站维护的团队。2. 恢复网站备份恢复:如果有定期备份,从最近的备份中…

日志篇:模组日志总体介绍

​ 今天我们学习合宙模组日志总体介绍,以下进入正文。 一、本文讨论的边界 本文是对合宙 4G 模组, 以及 4G+GNSS 模组的日志功能的总体介绍。通过日志,可以对研发过程中,以及模组运行过程中的各种故障进行分析。 二、4G模组日志的几种类型界 4G 模组的日志有两种类型: 业务…