IDEA实现NPM项目的自打包自发布自部署

news2024/12/23 22:28:27

目录

前言

正文

操作背景

NPM自发布

Package自发布

NPM部署

尾声


 

  • 🔭 Hi,I’m Pleasure1234
  • 🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.
  • 👯 I’m studying in University of Nottingham Ningbo China
  • 📫 You can reach me by url below:
  • My Blog Website: https://blog.yiming1234.cn 
  • My CSDN Blog: https://yiming1234.blog.csdn.net
  • My Email:Pleasure@yiming1234.cn
  • My Github:Pleasurecruise (自由的世界人) · GitHub
  • It's my pleasure to see you follow me!

原文地址:IDEA实现NPM项目的自打包自发布自部署 - Pleasure的博客

下面是正文内容:


前言

最近在研究项目的打包发布以及其在生产环境下的部署

谈谈Vue前端项目的自动打包,以及发布到Github Packages和部署到服务器

注:由于本人将前端项目和后端项目放置在了一个项目文件夹下,所以统一使用IDEA进行打开运行以及编辑。还是推荐使用WebStorm来进行前端项目的编辑(或者VScode)

还是以之前的这个校园墙仓库为例,注:使用的node版本是12.22.12

Github仓库地址:GitHub - Pleasurecruise/NottinghamWall: 宁波诺丁汉大学校园墙(个人项目,管理端已上线)

管理端项目地址:NottinghamWall/backend at main · Pleasurecruise/NottinghamWall · GitHub

正文

操作背景

在上一篇文章中我已经提到了相同的内容,这里在旧事重提一下

项目仓库每次进行更改更新的时候都需要重新进行打包发布非常的麻烦,所以可以用Github Action来替代这一重复的操作,实现自动化操作,提高开发效率和软件质量。

GitHub CLI(Command-Line Interface)是 GitHub 提供的一个命令行工具,旨在使用户能够从终端或命令行界面直接与 GitHub 交互。通过 GitHub CLI,用户可以执行许多在 GitHub 网站上执行的操作

Continuous Integration (CI):持续集成。开发人员频繁地将代码变更合并到主分支中,每次合并都会触发自动化构建和测试过程。这种方法能够快速发现和修复问题,确保代码库始终处于一个可工作状态。

Continuous Deployment (CD):持续部署。每次通过自动化测试的代码变更都会自动部署到生产环境中。这意味着代码一旦被提交并通过测试,就会立即被发布给用户。持续部署要求非常高的自动化测试覆盖率和严格的质量控制。

NPM自发布

参考资料:发布 Node.js 包 - GitHub 文档

在npm发布自己的组件包_npm 本地组件发布-CSDN博客

当我们在Github Action工作流中搜索Publish Node就可以看到我下面要介绍的两个配置文件

本人针对实际操作需要进行了一定更改

下面的配置文件实现的主要操作:

在admin文件夹下有新的push文件的时候触发操作

build步骤中:npm install

publish步骤中:npm publish

npm publish.yml

name: Node.js Publish
on:
  push:
    branches:
      - main
    paths:
      - 'admin/**'
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js 20
        uses: actions/setup-node@v3
        with:
          node-version: 20
      - name: Install dependencies
        run: npm install
        working-directory: ./admin
  publish:
    needs: build
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js 20
        uses: actions/setup-node@v3
        with:
          node-version: 20
      - name: Publish to npm
        run: |
          echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
          npm publish --access public --registry=https://registry.npmjs.org/
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
        working-directory: ./admin

NPM_TOKEN的设置

实现效果:

Package自发布

注意和发布npm的入口网址不同,一个是https://registry.npmjs.org/,另一个是https://npm.pkg.github.com/

release-package.yml

name: Node.js Package Release
on:
  push:
    branches:
      - main
    paths:
      - 'admin/**'
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js 20
        uses: actions/setup-node@v3
        with:
          node-version: 20
      - name: Install dependencies
        run: npm install
        working-directory: ./admin
  publish:
    needs: build
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js 20
        uses: actions/setup-node@v3
        with:
          node-version: 20
      - name: Publish to GitHub Packages
        run: |
          echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" > ~/.npmrc
          npm publish --registry=https://npm.pkg.github.com/
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        working-directory: ./admin

另外还需要在package.json中设置仓库地址等信息

{
  "name": "@octocat/my-package",
  "repository": {
    "type": "git",
    "url": "https://github.com/octocat/my-other-repo.git"
  },

二者的配置文件仅在最后一步的发布位置上存在差异(一开始尝试将两个配置文件合二为一不知道为什么没有成功......)

注意事项:

①每次在push的时候不能上传相同的内容,同时需要在package.json中更新每次push的版本号

②由于Github Action限制,Node版本只能设置20

③由于免费账号限制,仓库属性必须为public而不是private

④这里的GITHUB_TOKEN不需要特意设置

⑤项目模块在右上角的设置-项目结构-导入模块中进行导入

NPM部署

看之前的操作好像都是在npm build之后,将项目根目录下的dist文件夹上传至服务器然后以HTML网站的形式来实现运行

但是现在宝塔面板的网站类型中提供了Node项目这个选项,所以就将整个admin项目进行了上传

没有找到好的自部署方法......直接压缩后上传吧

这里将管理端的Node项目文件放置在了/www/NottinghamWall/admin文件夹下

当看到显示项目在运行中,并且在项目日志中看到下面的内容就说明启动成功了

可能会用的到的指令:sudo lsof -i:8888 kill -9 PID

尾声

笔记总结于鄙人代码日常

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

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

相关文章

【软件测试】RobotFramework常见问题如何解决 ?

附加-问题解决 1. 执行robot用例的时候提示WebDriverException: Message: invalid argument: cant kill an exited process 查看驱动的log是否是提示 如果是的话,参照第七步安装图形界面 2. jenkins启动后发现打不开jenkins页面的问题解决 打开jenkins页面提…

变频器CE认证如何办理?

随着国际贸易的蓬勃发展,现在越来越多的企业开始将自己的产品销往欧洲市场。然而,要想在欧洲市场上站稳脚跟,产品必须满足一系列的安全和性能标准。其中,CE认证是进入欧洲市场的“通行证”,对于变频器这类电气产品来说…

Java实验4

实验内容 考试题 要求在一个界面内至少显示5道选择题,每道题4个选项。题目从数据库读取。表结构自定义。 另有2个命令按钮,分别为“重新答题”(全部选项及正确答题数清空)和“提交”(计算),在…

2024最新最全MidJourney新手入门教程 参数设置教程

文章目录 MJ的基本使用提示词基本提示高级提示提示说明提示词分类Vary Region多提示分割 MJ 命令blenddescribeinfosettingshorten MJ 参数Aspect Ratios 横纵比Chaos 混乱程度Character Reference 引用图像no 不包含Quality 质量Repeat 重复Seeds 种子Stop 停止Sytle 风格Styl…

W外链创建抖音私信卡片教程,私信卡片跳转微信工具

W外链地址wai.cn 在数字化时代的浪潮中,私域流量的价值愈发凸显,成为企业获取用户、建立品牌忠诚度、提升转化率的关键手段。抖音,作为当下最热门的短视频社交平台之一,其用户基数庞大、互动性强,为企业私域引流提供了…

自己搭建邮件服务器时如何保障数据安全性?

自己搭建邮件服务器的要求?如何正确配置邮件服务器? 自己搭建邮件服务器成为许多企业和个人用户的选择,以实现更高的自主性和定制化需求。下面,AokSend将从几个方面探讨如何在自己搭建邮件服务器的过程中,有效保障数据…

哈默纳科HarmonicDrive减速机组装注意事项

在机械行业中,精密传动设备HarmonicDrive减速机对于维持机械运作的稳定性和高效性起着至关重要的作用。然而在减速机的组装过程中,任何一个细微的错误都可能导致其运转时出现振动、异响等不良现象,严重时甚至可能影响整机的性能。因此&#x…

内衣裤洗衣机有必要买吗?五样超卓臻品专业推荐!

在当今繁忙的生活中,内衣洗衣机已成为我们日常生活中不可或缺的家电。但是,面对市场上众多品牌的内衣洗衣机,那么,到底内衣洗衣机哪个牌子好?本次我将在这篇文章中探讨内衣洗衣机的选购策略,以帮助大家找到…

软件测试好就业吗?软件测试行业的就业前景分析

一、软件测试的重要性 在当今信息化的时代,软件产品的质量至关重要。随着软件行业的蓬勃发展,软件测试作为保障软件质量的关键环节,其重要性日益凸显。软件测试工程师的角色不再仅仅局限于找出软件的缺陷,他们更是软件质量保障的守…

Adobe XD中文设置指南:专业设计师的现场解答

Adobe XD是世界领先的在线合作UI设计工具。它摆脱了Sketch、Figma等传统设计软件对设备的依赖,使设计师可以随时随地使用任何设备打开网页浏览器,轻松实现跨平台、跨时空的设计合作。然后,为了提高国内设计师的使用体验,Adobe XD如…

Django F()函数

F()函数的作用 F()函数在Django中是一个非常强大的工具,主要用于在查询表达式中引用模型的字段。它允许你在数据库层面执行各种操作,而无需将数据加载到Python内存中。这不仅提高了性能,还允许你利用数据库的优化功能。 字段引用 在查询表达…

《藏语翻译通》App功能升级,支持藏文词典在线查单词!iPhone用户推荐使用的藏语学习工具!

《藏语翻译通》App上线了藏文词典查单词功能,该功能可以帮助你更有效地学习藏语,以及掌握工作中涉及到的专业术语。本次更新提供了藏汉词典、藏汉大词典、新术语在线查单词功能。 打开App Store搜索关键词:藏文词典 下载这个官方软件 点击首…

如何理解Spring事务

1 Spring事务是干什么的,解决了什么 Spring事务其实准备来讲叫Spring事务管理,拿mysql来说,事务已在其默认引擎innodb中实现了,我们是通过它提供的sql指令去开启事务、提交/回滚事务。 那么有的疑问是什么呢? 事务不…

企业资源管理的变革:ERP软件的消失与整合型OA系统的崛起

企业资源管理在现代企业运营中起着至关重要的作用。过去,ERP(Enterprise Resource Planning,企业资源计划)系统因其强大的整合能力和广泛的功能性,被誉为企业管理的中枢。然而,随着技术的迅猛发展和企业需求…

黑马头条微服务学习day02-app端文章查看,静态化freemarker,分布式文件系统MinlO

文章目录 app端文章列表需求分析实现思路实现步骤编写mapper文件编写控制器代码 文章详情实现思路FreemarkerminIO app端文章列表 需求分析 实现思路 实现步骤 ArticleHomeDto package com.heima.model.article.dtos;import lombok.Data;import java.util.Date;Data public c…

某oa代码审计

简介 这次是一次网盘搜索找到的代码。原本因为要下载一些资源顺手充了个网盘会员,结果发现意外的发现网盘搜索出来的资源还挺丰富。于是便开始搜索一些源码。。。 然后安装完毕之后进入web目录中,将web目录单独打包出来。 ps: 由于源码貌似是个备份文件…

超详细Python安装教程(包含python解释器和pycharm)

目录 一,安装python解释器 二,安装PyCharm开发工具 一,安装python解释器 下载地址:https://www.python.org/downloads/ 如果是在windows上下载的话,选择Downloads->Windows 我选择了最新版本的64位安装&#xf…

46 mysql 客户端拿不到具体的错误信息

前言 这是最近碰到的一个问题 同样的一个 环境的问题, 在正常的 mysql 环境会返回 具体的错误信息, 然后 在我的另外一个环境里面 只能返回一些 unknown error 之类的 十分抽象的环境 然后 我们这里 来看一下 具体的情况 我们这里从 错误的环境 往前推导 来查看 并解决这个…

低代码引时代浪潮,校企合作实训共筑未来蓝图

荣誉在身,责任在肩。 为贯彻国家科教兴国战略,充分发挥技术、人才等资源优势,提升学校科研能力与企业技术管理水平。2024年4月,山东建筑大学联合织信低代码正式签署“校企合作协议”,共同构建产学研联盟创新体系&…

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(二)——带着问题的学习;一刷感受;环境搭建

按照作者在读者寄语中的说法:我们得榨干这本书的知识。 带着问题 为了更好的学习,我们最好带着问题去探索。 第一:核心问题与基础知识 如上图:这本书介绍了SLAM相关的核心问题和基础知识。王谷博士给我们做了梳理:…