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
英文地址,請注明出處:http://en.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…