VShell:生产发布工作流程

本周,我准备将我的命令行工具 vshell 发布到生产环境。此版本将使用户能够直接通过 npm 安装和使用 vshell,而无需在本地克隆和构建项目。该工具使用 javascript 和 node.js 编写,将托管在 npm 上以便于分发。以下是我实现此版本所遵循的步骤的详细分解:

自动化构建过程

为了确保可重复和自动化的构建,我在项目的根目录中创建了一个 build.js 脚本。该脚本将所有必需的文件复制到 dist 文件夹中,从而简化了构建过程。

VShell:生产发布工作流程

此外,我还在package.json中设置了一个脚本来运行它:

“build”: “node build.js”

要运行它,只需在控制台输入:npm run build

目前,我只是想演示一个简单的构建作为复制文件,但将来,如果我用 ui 实现,那么我需要使用模板捆绑脚本作为 barbel。

实施语义版本控制

以前,我经常在更改后忘记更新项目版本。在此版本中,我采用了语义版本控制来清楚地传达项目 api 中的更改。

考虑到 v0.0.1 以来的重大更新,我通过更新 package.json 中的版本字段将版本设置为 v1.0.0。此版本反映了稳定的 api,具有重大更改和新功能。

git 中标记发布

为了与 github 发布同步版本更新,我为 v1.0.0 创建了一个 git 标签:

git tag -a v1.0.0 -m "release version 1.0.0"git push origin --tags

这可确保在 git 存储库中正确跟踪发布。

声明包文件

为了将 vshell 发布为 npm 包,我使用 package.json 中的 files 字段明确定义了要包含在包中的文件。这可确保发布的包中仅包含必要的文件和目录。

示例:

VShell:生产发布工作流程

发布到 npm

在 npm 上发布 vshell:

注册并登录:我创建了一个 npm 帐户并使用以下方式登录:登录发布:经过身份验证后,我发布了包:npm 发布

这使得用户可以通过 npm 使用 vshell。

超出范围的更新

github dependabot 标记了传递依赖交叉生成的安全问题。由于我没有直接安装,所以我使用了:

npm ls 交叉生成

识别哪个包依赖于它。我发现 eslint 是源头,并通过将 eslint 更新到最新版本解决了该问题。

此外,我更新了 readme.md 以为 npm 用户提供清晰的安装说明。我还改进了 contributing.md 文件,以指导贡献者在本地设置和运行 vshell。

为了提高准确性,我吸收了 david humphrey 教授的反馈,扩展并澄清了 groq 系统文档。

使用 github actions 自动发布

为了简化发布流程,我在 github actions 工作流程中添加了一项作业,以便在推送新标签时自动执行 npm 发布。

工作流程添加:

release:    needs: build    runs-on: ubuntu-latest    if: startsWith(github.ref, 'refs/tags/')    permissions:      contents: write    steps:    - name: Checkout code      uses: actions/checkout@v4    - name: Setup Node.js      uses: actions/setup-node@v4      with:        node-version: 22.x        registry-url: 'https://registry.npmjs.org'    - name: Install dependencies      run: npm ci    - name: Build project      run: npm run build    - name: Update version      run: npm version ${{ github.ref_name}} --no-git-tag-version    - name: Publish to npm      run: npm publish      env:         NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}}    - name: Create GitHub release      uses: softprops/action-gh-release@v1      with:        name: Release ${{ github.ref_name}}        draft: false        prerelease: false        token: ${{ secrets.GITHUB_TOKEN }}

主要特点:

条件触发:只有当标签(v*.*.*)被推送时才会触发发布作业。

npm 身份验证:使用存储在 github secrets 中的安全 npm_auth_token。您可以通过转到您的 npm 帐户并选择“访问令牌”部分来创建此令牌。

github release:使用 softprops/action-gh-release 自动生成版本。

结论

按照这些步骤,我成功地将 vshell 自动化发布到 npm。用户现在可以通过以下方式轻松安装和使用该工具:

npm install -g vshell

这种简化的流程,加上适当的版本控制、依赖关系管理和文档更新,确保了 vshell 的专业且用户友好的发布。

以上就是VShell:生产发布工作流程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1498683.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 20:40:25
下一篇 2025年12月18日 17:51:32

相关推荐

  • 使用 Cloudflare Workers 实施 Gmail 发送 – 开发指南

    这是使用 cloudflare workers 实施 gmail 发送系列的第 2 部分: 第 1 部分:设置 ✅第 2 部分:开发环境(当前)第 3 部分:实施(即将推出) 介绍 在第 1 部分中设置 gmail api 访问权限后,我们现在将为 cloudflare workers 配置开发环境…

    2025年12月19日
    000
  • 每个 JavaScript 项目的必备要素

    作为一名开发人员,特别是如果您是团队的新手,增加价值的最快方法之一就是引入改进日常工作流程的工具。这些工具有助于维护代码质量、确保一致性并简化开发流程。以下是我认为任何 javascript 项目都必须具备的要素的列表: 1. 使代码格式保持一致 工具:更漂亮一致的代码格式可以减少代码审查期间的“挑…

    2025年12月19日
    000
  • 我如何构建我的开发者组合

    作为一名 React Native 和 iOS 开发人员,我想要一个能够真正代表我在移动开发领域工作的作品集。我决定从头开始构建一些可以有效展示我的应用程序的东西,而不是使用模板。 构建 我使用 Next.js 和 TailwindCSS 构建了这个组合,专注于创建流畅的、类似应用程序的体验。该设计…

    2025年12月19日
    000
  • JavaScript 中错误和异常的区别

    https://github.com/ray-d-song 错误和异常是从实践中诞生的概念,旨在处理“可编程错误”。 错误 从代码角度来看,错误往往会被手动精确处理。 例如,fna 调用 fnb 和 fnc。两种方法都可能遇到错误,处理代码大致如下: function fna() { const {…

    2025年12月19日
    000
  • 进入后端世界的新 Web 开发人员必须了解的技巧

    过渡到后端开发对于 Web 开发人员来说既令人兴奋又充满挑战。前端专注于用户界面和体验,而后端开发则处理为 Web 应用程序提供支持的幕后逻辑、数据库和服务器端进程。如果您是刚进入后端世界的新开发人员,这里有十个基本技巧可以帮助您导航和发展。 1。了解后端的作用后端是 Web 应用程序的基础。它处理…

    2025年12月19日
    000
  • 为什么我的 Node.js 代码无法用 require 引入 Chai?

    为何在 Chai 的实际使用中无法使用 require 引入? 某些开源代码中使用 require 引入 Chai 库,例如 GitHub 上 tree-sitter/node-tree-sitter 中的代码。然而,在实际使用中,却无法通过 require 在 Node.js 代码中引入 Chai…

    2025年12月19日
    000
  • Electron-React项目中:如何配置和使用已安装的Webpack?

    在已安装 webpack 项目中配置和使用 webpack 的详细指南 在 electron-react 模板创建的 electron 项目中,虽然已安装 webpack,但还需要进行一些配置才能正常使用。本指南将详细介绍如何配置和使用 webpack。 如何配置 webpack 按照项目 read…

    2025年12月19日
    000
  • Webpack已安装但无法使用?如何正确配置和启动Webpack?

    使用已安装的 webpack 已安装了 webpack 组件,但还不能直接使用?以下提供使用 webpack 的步骤: 使用框架开发 按照项目 readme 的说明进行即可,无需额外配置 webpack。这也是使用框架的优势所在。 手动修改配置 若需强行修改 webpack 配置,可在 packag…

    2025年12月19日
    000
  • 如何使用Git子模块在Vendor目录下创建第三方库的软链接?

    如何利用 git 子模块在 vendor 中创建第三方库的“软连接” 在 GitHub 的三方库中,我们经常会看到一个结构,在三方库下依赖另一个三方库,看起来就像一个软连接。这种操作在实际开发中可以通过 Git 子模块来实现。 Git 子模块是一种将一个外部 Git 仓库作为一个子目录添加到另一个 …

    2025年12月19日
    000
  • 如何用Git子模块在项目中关联和管理GitHub第三方库?

    如何使用软连接在实际开发中关联第三方库 代码托管平台 github 上经常可以看到三方库中依赖另一个三方库的结构,通过软连接加载,并指定了依赖库的版本号。本文将探讨在实际开发中如何实现这一操作,并介绍执行此操作的专业术语:git 子模块。 在 vscode 等开发环境中,可以通过下列步骤在 vend…

    2025年12月19日
    000
  • 如何在 Git 中删除分支:完整指南

    Git 是现代软件开发中用于版本控制的重要工具。管理分支是使用 Git 的关键部分,因为分支允许团队有效协作并处理不同的功能或错误修复,而不会干扰主代码库。一旦分支达到其目的,最好将其删除,以保持存储库的干净和组织。在本指南中,我们将介绍如何删除 Git 分支,涵盖本地和远程分支,并解释每个步骤的重…

    2025年12月19日
    000
  • 如何用Git子模块在本地链接第三方库?

    如何利用 git 子模块在本地进行第三方库链接? 在软件开发中,有时需要将第三方库纳入我们的项目。github 上常见的做法是在第三方库下依赖另一个三方库,就像一种软连接。那么,如何在本地实现这种链接? 在 visual studio code 中,我们可以利用 git 子模块来实现这一目的。git…

    2025年12月19日
    000
  • 如何通过后台管理系统轻松编辑前端页面元素?

    通过后台管理前端页面元素的开源项目 正如提问者所述,早先有一个开源项目可以通过后台管理的方式管理前端展示的页面元素,例如轮播图、自定义 tabar 和图文列表等。尽管难以找到该特定项目,但类似功能的开源项目确实存在。 其中一个值得推荐的是 CRMEB(地址:gitee.com/ZhongBangKe…

    2025年12月19日
    000
  • 有哪些开源项目可以让我通过后台管理前端页面元素? 或 如何用开源项目后台管理前端的轮播图、Tabbar等元素?

    可通过后台管理前端元素的开源项目推荐 您提到以前看到的开源项目能够通过后台管理的方式,对前端展示的页面元素进行管理,包括轮播图管理、自定义 tabbar、图文列表等。本文将为您推荐几个提供类似功能的开源项目: CRMEB Github 地址:https://gitee.com/ZhongBangKe…

    2025年12月19日
    000
  • JavaScript 变量:理解基元和引用类型

    两种基本类型的数据存储在 javascript 中的变量中:基元 和 引用类型。了解这两种类型之间的区别对于内存管理以及调节数据的共享、存储和更改至关重要。本文深入探讨了它们之间的区别,提供了现实世界的示例,并研究了有效处理这两种类型的方法。 1.基元与引用类型 原语 最简单的数据类型称为基元。它们…

    2025年12月19日
    000
  • 具有默认响应式导航栏的 React/Tailwind 模板

    我只是对排除 App.test.js 和所有那些我不会在 React 项目中使用的默认文件感到恼火,而且除了来自 Tailwind UI 网站的免费版本的导航栏之外,我从未找到过好的导航栏,这不是我见过的最好的导航栏。考虑到这一点,我从头开始为任何 React 项目创建了一个模板。我删除了所有不必要…

    2025年12月19日
    000
  • Svelte 5 中的异步获取

    当你想在 svelte 中获取某些内容时,推荐的方法是将其放入 load 函数中。 我写了一篇关于异步获取的文章以及为什么这对于加载函数之外的工作很重要。 一般来说,当不涉及ssr时,您可以更好地控制竞争条件、错误处理和加载函数之外的实现。虽然我同意在大多数情况下您应该使用加载函数(使用 svelt…

    2025年12月19日
    000
  • GitHub 本身是开源项目吗?

    GitHub 站点本身是开源的吗? 想知道 GitHub 本身是否为开源项目?答案是: 否,Github 站点本身是闭源的 尽管 GitHub 是一个托管开源项目的平台,但它本身并不是一个开源项目。该平台由 Microsoft 拥有和维护,其代码库对公众不可用。闭源软件通常是出于安全考虑或商业利益而…

    2025年12月19日
    000
  • GitHub 网站本身是开源的吗?

    GitHub 站点的开源状态 有许多开发者好奇 GitHub 站点本身是否开源。 GitHub 站点是开源的吗? 令人惊讶的是,GitHub 站点本身并不是开源的。它是一个闭源项目,这意味着其基础代码、设计和实现细节不向公众公开。 GitHub 团队做出这一决定的原因有很多。首先,闭源允许他们更有效…

    2025年12月19日
    000
  • WebStorm 中 Git 图标消失了怎么办?

    如何在 WebStorm 中找回消失的 Git 图标 WebStorm 是一款流行的 IDE,它通常会在项目的顶部显示一个 Git 图标,用于访问版本控制功能。然而,一些用户遇到过此图标消失的问题。 对于 WebStorm 2024.1.2 版本,可以通过以下步骤找回此图标: 单击菜单栏中的 &#8…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信