首页 > 其他分享 >无需等待Vue Release发布,就能在项目中体验最新版

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

时间:2024-10-24 08:51:54浏览次数:6  
标签:pr ci Vue pkg pnpm Release new 最新版

前言

两个月前尤大在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
      - minor

jobs:
  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.yml

  continuous-release:
    if: github.repository == 'vuejs/core'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install pnpm
        uses: pnpm/action-setup@v4

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version-file: '.node-version'
          registry-url: 'https://registry.npmjs.org'
          cache: 'pnpm'

      - name: Install deps
        run: pnpm install

      - name: Build
        run: pnpm build --withTypes

      - name: Release
        run: 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。

标签:pr,ci,Vue,pkg,pnpm,Release,new,最新版
From: https://www.cnblogs.com/heavenYJJ/p/18493153

相关文章

  • vue3,清除缓存,重新安装依赖
     vue3,清除缓存,重新安装依赖如果你正在使用Vite,尝试清除缓存或重启开发服务器:#清除缓存rm-rfnode_modules/.vite #或者重启开发服务器npmrundev #或者yarndev----------------------------------------------vue3重新安装依赖 如果上述步骤都不能解决......
  • Electron+vue3+vue Router中打开新窗口时候,新窗口的渲染内容无法按照原来的URL渲染的
    如果在router中设置了histroyhistory:createMemoryHistory(),那么在electron中打开新窗口时候,即使指定了login页面,他也会与打开主窗口的重定向路由页面一样我就是看文档时候用了官方的例子解决方法:使用history:createWebHistory(import.meta.env.BASE_URL),重点:cre......
  • vue3.0生命周期
    最近要面试,复习一下生命周期的知识点:beforeCreate在组件实例初始化完成之后立即调用created在组件实例处理完所有与状态相关的选项后调用。当这个钩子被调用时,以下内容已经设置完成:响应式数据、计算属性、方法和侦听器。然而,此时挂载阶段还未开始,因此 $el 属性仍不可用。b......
  • springboot+vue展位设计模型库网站的java开发与设计
    目录系统实现截图详细技术介绍本课题软硬件环境核心代码部分展示其他springboot项目推荐详细视频演示源码获取系统实现截图详细技术介绍系统采用了基于SpringBoot、Vue和MySQL的三层结构体系。前端部分通过Vue框架构建用户界面,实现页面展示和交互功能,后端则利......
  • JAVA开源项目 基于Vue和SpringBoot购物商城网站
    本文项目编号T032,文末自助获取源码\color{red}{T032,文末自助获取源码}......
  • JAVA开源项目 基于Vue和SpringBoot高校心理教育辅导系统
    本文项目编号T031,文末自助获取源码\color{red}{T031,文末自助获取源码}......
  • 毕业设计-基于SpringBoot与Vue实现的智能停车场系统
    项目简介基于SpringBoot+Vue的智能停车场项目系统内置多项核心功能,包括系统管理、账号管理、系统监控、财务管理、停车记录、车辆管理、车牌识别和停车场管理。系统管理涵盖角色、接口、菜单和全局配置,账号管理包括用户和合作单位管理。系统监控提供监控大屏和日志监控功......
  • 毕业设计-基于springboot+vue实现的在线文档管理系统源码+论文
    项目简介这个在线文档管理系统基于MySQL数据库,并采用了SpringBoot框架进行开发。在设计过程中,我们特别注重了系统代码的可读性、实用性、易扩展性、通用性、维护便捷性以及页面简洁性等特点。当前,许多人仍然依赖传统的纸质工具来进行信息管理,而网络技术仅仅被视为辅助手段。......
  • vue3+java基于Spring Boot的爱老助老服务平台源码 lw 部署
    目录功能介绍具体实现截图技术介绍开发核心技术介绍:技术创新点vue3和vue2的区别:核心代码部分展示非功能需求分析系统开发流程软件测试源码获取功能介绍爱老助老服务平台的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使......
  • Vue学习笔记(一)
    模板语法Vue使用一种基于HTML的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的DOM上。所有的Vue模板都是语法层面合法的HTML,可以被符合规范的浏览器和HTML解析器解析。文本差值最基本的数据绑定形式是文本插值,它使用的是“Mustache”语法(即双大括号):<scrip......