Nuxt3自动打包及自动修改端口号脚本

Nuxt3自动打包及自动修改端口号脚本技术文章大纲

背景与需求

Nuxt3作为现代Vue框架,开发中常需处理打包部署和端口配置问题。自动化脚本可提升效率,减少手动操作错误。

实现自动打包

利用Nuxt3内置命令结合Node.js脚本实现自动化构建。通过npm run build生成生产环境代码,脚本可集成环境变量和自定义参数。开发服务器默认端口为3000,通过自动打包插件读取index.mjs文件修改端口号。

// 根目录下创建 build-and-test.js
import { execSync, spawn } from 'child_process';
import fs from 'fs';
import http from 'http';const BUILD_CMD = 'npm run build';
const OUTPUT_ENV = '.output/.env';
const SERVER_ENTRY = '.output/server/index.mjs';
const NEW_PORT = 3001;// 1. 打包
console.log('开始生产环境打包...');
execSync(BUILD_CMD, { stdio: 'inherit' });// 直接替换 .output/server/index.mjs 里的端口号
const serverEntryPath = '.output/server/index.mjs';
if (fs.existsSync(serverEntryPath)) {let serverEntryContent = fs.readFileSync(serverEntryPath, 'utf-8');// 替换 const port = destr(process.env.NITRO_PORT || process.env.PORT) || 3e3;serverEntryContent = serverEntryContent.replace(/const port = destr\(process\.env\.NITRO_PORT \|\| process\.env\.PORT\) \|\| 3e3;/,`const port = ${NEW_PORT};`);fs.writeFileSync(serverEntryPath, serverEntryContent, 'utf-8');console.log(`已将 .output/server/index.mjs 端口号强制替换为 ${NEW_PORT}`);
}// 3. 启动产物
const server = spawn('node', [SERVER_ENTRY], {stdio: 'inherit',detached: false,
});// 4. 测试端口连通性
setTimeout(() => {console.log(`测试 http://localhost:${NEW_PORT}`);http.get(`http://localhost:${NEW_PORT}`, (res) => {if (res.statusCode === 200) {console.log('✅ 服务启动成功!');} else {console.log('⚠️ 服务启动,但返回码不是200:', res.statusCode);}server.kill();process.exit(0);}).on('error', (e) => {console.error('❌ 服务未能正常启动:', e.message);server.kill();process.exit(1);});
}, 5000); // 等待5秒让服务启动
脚本运行命令行配置
// package.json 中添加下面这一行作为打包命令行。"scripts": {..."build-and-test": "node build-and-test.js",},
实际应用场景

适用于CI/CD流水线、多环境部署或团队协作开发。脚本可扩展为自动化测试、代码检查等流程。

注意事项
  • 确保端口及环境变量信息配置正确
  • 部署后验证效果是否端口更改成功
  • 错误日志记录机制
总结

自动化脚本显著提升Nuxt3项目开发效率,减少重复劳动。灵活配置适应不同部署需求。

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

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

相关文章

红海云国资案例之多层级工贸集团的一体化HR平台建设实战

在中国经济迈向高质量发展的进程中,国有企业作为重要的经济支柱和行业引领者,正面临着数字化转型的深刻变革。F集团作为G市首家实现工贸一体化运营的大型企业,位列中国轻工业百强,其在人力资源数字化转型中的探索和实践&#xff0…

TCP详解——流量控制、滑动窗口

目录 流量控制 滑动窗口 丢包重传 情况一:数据到达,应答丢失 情况二:数据包丢失 流量控制 TCP协议会根据接收端的缓冲区大小来调整发送速度,剩余空间多则发送速度快,否则降低发送速度 接收端将⾃⼰可以接收的缓…

C#高级特性面试问题的详细分析,涵盖核心概念、应用场景和最佳实践

序列化与反序列化 1. 什么是序列化和反序列化?用途是什么? // 序列化示例 Person person new Person { Name "Alice", Age 30 }; string json JsonSerializer.Serialize(person); // 序列化为JSON// 反序列化示例 Person deserialized Js…

【电脑】内存的基础知识

内存(Memory)是计算机中用于临时存储数据和程序的地方,它直接影响到系统的运行速度和性能。以下是关于内存的详细知识:1. 内存类型常见的内存类型包括以下几个主要种类:SDRAM (Synchronous Dynamic Random Access Memo…

Java---IDEA

IDEA概述 IDEA:全称Intellij IDEA,是用于Java语言开发的集成开发环境 集成环境:把代码编写,编译,运行,调试等多种功能综合到一起的开发工具 下载与安装 下载:IntelliJ IDEA – the IDE for …

【每日刷题】x 的平方根

69. x 的平方根 - 力扣(LeetCode) 方法一:暴力 从0开始遍历,直到 ans*ans > x 为止,这时ans-1就是答案。需要注意可能会爆int,所以ans要开为long,最后再转换为int。 class Solution {publ…

C#元组:从基础到实战的全方位解析

C#元组:从基础到实战的全方位解析 在 C# 编程中,元组(Tuple)是一种轻量级的数据结构,用于临时存储多个不同类型的元素。无论是方法返回多个值、LINQ 查询中的临时投影,还是简化数据传递,元组都以…

Django母婴商城项目实践(二)

2、母婴商城项目环境配置 环境配置: Python3.12 解释器Pycharm Professional 2025.1 编辑器Django 4.2(或 Django 5.x)MySQL 8.0.28 数据库 1、Django框架 介绍 Django是一个高级的Python Web应用框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责…

Go语言的Channel通道的含义。区分缓冲通道和非缓冲通道,并讨论通道的发送、接收、关闭以及如何安全地从已关闭的通道读取数据。

非缓冲通道:非缓冲通道在确定时没有声明容量大小,发送和接收操作会同步阻塞,直到另一端准备好。发送方和接收方必须同时就绪才能完成数据交换,否则会阻塞。常用于goroutine之间的同步通信。缓冲通道:缓冲通道在确定时就…

tensor

😉如果您想用jupyter notebook跑我的笔记,可以在下面获取ipynb版本 😊麻烦给个免费的star😘 ❤️主包也更建议这种形式,上面的笔记也更加全面,每一步都有直观的输出 文章目录📚 PyTorch张量操作…

STM32-DAC数模转换

DAC数模转换:将数字信号转换成模拟信号特性:2个DAC转换器每个都拥有一个转换通道8位或12位单调输出(8位右对齐;12位左对齐右对齐)双ADC通道同时或者分别转换外部触发中断电压源控制部分(外部触发3个APB1&am…

前后端集合如何传递

前端vue后端rest风格&#xff1a;1.路径传参&#xff08;参数必传&#xff09;&#xff0c;通过pathvarible注解后端&#xff1a;DeleteMapping("/{YYIDs}")public R<Void> remove(NotEmpty(message "主键不能为空")PathVariable String[] YYIDs) {…

1353. 最多可以参加的会议数目

1353. 最多可以参加的会议数目 题目链接&#xff1a;1353. 最多可以参加的会议数目 代码如下&#xff1a; class Solution { public:int maxEvents(vector<vector<int>>& events) {int mx 0;for (auto& e : events) {mx max(mx, e[1]); // 找到最大的结…

OCR 本地版本

UMI OCR 支持本地部署&#xff0c;支持HTTP OCR

大数据驱动的酒店用品需求预测模型研究 开发——毕业论文,毕业设计——仙盟创梦IDE

主页酒店用品 平台协议促销毕业论文摘要本研究旨在构建基于大数据分析的酒店用品需求预测模型&#xff0c;以提高酒店用品批发企业的库存管理效率和供应链响应速度。研究整合了酒店历史采购数据、季节因素、市场趋势、节假日信息等多源数据&#xff0c;通过对比传统时间序列模型…

Windows11桌面解锁守护脚本

使用python程序加bat一键运行脚本&#xff0c;妈妈再也不用担心我的电脑桌面了import os import time import cv2 import pyautogui import psutil from datetime import datetimeclass UnlockMonitor:def __init__(self):"""初始化监控器"""sel…

Linux Ubuntu系统的用户管理

一.关于root用户默认我们安装完系统后 注册的用户就是管理员用户标识符 $ 管理员标识符#最高管理员在Ubuntu系统中,root是最高管理员,拥有最大的权限,默认情况下root用户没有启用密码,而是通过sudo机制来获取管理员权限二.Ubuntu系统中root用户的默认状态root用户存在,但未启用…

ROS1学习第三弹

ROS1学习第二弹 本文纯属记录学习过程&#xff0c;所学教程来自B站古月居ROS入门21讲 tf工具的使用 命令行中 1.rosrun tf view_frames 生成当前各个坐标的结构图&#xff0c;导出pdf文件到当前终端所在文件夹下面2.rosrun rviz rviz -d rospackage find turtle_tf /rviz/tu…

技术演进中的开发沉思-30 MFC系列:五大机制

MFC&#xff0c;记得我刚毕业时在 CRT 显示器前敲下第一行 MFC 代码时&#xff0c;那时什么都不懂&#xff0c;没有框架的概念。只觉得眼前的 CObject 像位沉默且复杂的大家族&#xff0c; 就像老北京胡同里的大家族&#xff0c;每个门牌号都藏着自己的故事。但现在看看&#x…

机器学习-06(Optimization-自动调整学习率)

临界点其实不一定是在训练神经网络过程中遇到的最大阻碍。随着对参数的不断更新&#xff0c;Loss值会不断下降&#xff0c;直至几乎没有变化&#xff0c;不再下降。当参数更新到临界点时&#xff0c;意味着gradient非常小&#xff0c;所以要认定参数是否到达临界点应当确认grad…