当前位置: 首页 > news >正文

nuxt.js 流水线自动部署设置

常规配置适用"cloudflare"、"netlify"
1.git存储库 选gitlab 或者 github 需要部署的代码
2.构建配置
  构建命令(Build command): npm run generate 
  构建输出(Publish directory): dist 
  根目录(Package directory)[可以空着]:
  函数目录Functions directory[可以空着或者netlify/functions]:
3.自定义配置变量
  指定node版本   NODE_VERSION                  14.18.1                         
  指定npm镜像     NPM_CONFIG_REGISTRY           https://registry.npmmirror.com/  
       指定打包环境     DEPLOY_PLATFORM               cloudflare                       

4. 项目package.josn 配置打包环境项
"scripts": {"dev": "nuxt","build": "nuxt build","start": "nuxt start","generate:default": "DEPLOY_PLATFORM=default nuxt generate","generate:github": "DEPLOY_PLATFORM=github nuxt generate","generate:gitlab": "DEPLOY_PLATFORM=gitlab nuxt generate","generate:cloudflare": "DEPLOY_PLATFORM=cloudflare nuxt generate","generate": "nuxt generate","lint": "eslint --ext .js,.vue --ignore-path .gitignore .","preview": "nuxt preview"}

5. 配置nuxt.config.js

// 先定义各平台的路径配置常量(便于维护)
const platformConfig = {default: {routerBase: '/',publicPath: '/_/',axiosBaseURL: 'http://localhost:3000',faviconHref: '/favicon.ico'},github: {// 替换为你的 GitHub 仓库名,比如仓库是 username/bbx,则填 /bbx/routerBase: '/bbx/',publicPath: '/bbx/_/',axiosBaseURL: '/',faviconHref: '/bbx/favicon.ico'},gitlab: {routerBase: '/bbx/',publicPath: '/_/',axiosBaseURL: '/',faviconHref: '/bbx/favicon.ico'},cloudflare: {routerBase: '/',publicPath: '/_/',// 替换为你的 Cloudflare Pages 域名axiosBaseURL: '/',faviconHref: '/favicon.ico'}
}// 获取当前部署平台(默认 fallback 到 default)
const currentPlatform = process.env.DEPLOY_PLATFORM || 'default';
const config = platformConfig[currentPlatform];export default {target: 'static',// 路由配置:动态适配各平台
  router: {base: config.routerBase,trailingSlash: true},// 页面头部配置
  head: {title: '',meta: [],link: [{ rel: 'icon', type: 'image/x-icon', href: config.faviconHref },],script: [],__dangerouslyDisableSanitizers: ['script'],},// 全局 CSScss: ['~/assets/css/main.css'],// 插件
  plugins: [],components: true,buildModules: [],modules: ['@nuxtjs/axios', '@nuxtjs/pwa', '@nuxt/content'],// Axios 动态适配
  axios: {baseURL: config.axiosBaseURL,},content: {},// 构建配置:动态适配 publicPath
  build: {publicPath: config.publicPath,extractCSS: true,optimizeCSS: true,extend(config, { isDev, isClient }) {if (!isDev && isClient) {config.optimization.splitChunks.maxSize = 300000;}}},// 生成配置
  generate: {dir: 'dist', // 所有平台默认输出到 dist(GitLab 后续手动 mv 到 public)fallback: '404.html',interval: 100,},static: {prefix: false}
}

6.gitlab 流水线  .gitlab-ci.yml 配置,  没有的话创建改文件,与package.josn同级路径下

# .gitlab-ci.yml
# 使用 Nuxt 2.14.6 + Node 14.18.1
stages:- build- pages  # 改为 pages 阶段(可选,但语义更清晰)# 缓存配置,加速构建
cache:paths:- node_modules/- .nuxt/- dist/# 构建阶段(注入 GitLab 环境变量,适配路径)
build:stage: buildimage: node:14.18.1-alpinebefore_script:- echo "设置 npm 镜像..."- npm config set registry https://registry.npmmirror.com/- npm cache clean --force script:- echo "安装依赖..."- npm install --no-optional- echo "构建项目..."- npm run build- echo "生成 GitLab 适配的静态文件..."# 核心修改:注入 DEPLOY_PLATFORM=gitlab 环境变量,让 nuxt.config.js 适配 GitLab 路径- DEPLOY_PLATFORM=gitlab npm run generate  - mkdir -p public    # 创建 Pages 要求的 public 目录- cp -r dist/* public/  # 把静态文件复制到 public/(Pages 只能识别该目录)artifacts:paths:- public/  # 构建产物输出到 public,供后续 pages 作业使用expire_in: 1 houronly:- main# 关键:Pages 专属作业(名称必须是 pages,否则 GitLab 不识别)
pages:stage: pagesimage: alpine:latestdependencies:- build  # 依赖 build 作业的 public 产物script:- echo "GitLab Pages 自动部署(无需额外脚本,GitLab 会自动处理)"artifacts:paths:- public/  # 必须输出 public 目录,作为 Pages 站点根目录expire_in: 1 dayonly:- main  # 只在 main 分支触发 Pages 部署

 

http://www.rkmt.cn/news/116254.html

相关文章:

  • 通路分析?Reactome 2026
  • CSPS2020 题解
  • 2025年制冷产品供应商口碑排名:浙江冷王科技的品牌口碑好不 - mypinpai
  • 如何快速部署Collabora Online:构建企业级文档协作平台的完整指南
  • 【翻译】【SOMEIP-SD】Page54- Page56
  • 从 G1 到 G7:台式扫描电镜在稳定性与自动化上的技术演进
  • 2025年制造业视觉贴标机厂家推荐:自动化升级的精准选择 - 资讯焦点
  • 环形数组+位运算+双向链表:手把手教你实现一个生产级C++定时器系统
  • 2025 年 12 月等离子清洗机厂家实力推荐榜:精密清洗与表面处理技术领先供应商深度解析 - 品牌企业推荐师(官方)
  • 免费无广!燃脂腹肌速成 APP,宅家就能练出线条
  • hsweb-framework Easy-ORM深度解析:企业级数据访问层实战指南
  • 2025年氟利昂专业代理商排行榜,新型氟利昂供应商新测评推荐 - myqiye
  • 网络拓扑可视化实战:用NetBox插件5分钟构建专业级网络拓扑图
  • TestDisk数据恢复终极指南:免费工具拯救你的丢失文件
  • 【开题答辩全过程】以 基于Python的可视化动漫分析系统设计与实现为例,包含答辩的问题和答案
  • 案例解读 | 运维驱动业务,护航中国银行数字化转型
  • 苏州婚纱摄影工作室推荐榜单:品质与服务双优的备婚首选 - charlieruizvin
  • CANoe驱动下的汽车服务导向网络原型设计与应用
  • 【数据库】金仓数据库:不止于兼容,更致力于成为企业的增长引擎
  • 5个常见错误:为什么你的TAP驱动程序总是安装失败?
  • 浏览器水印终极解决方案:watermark-js-plus实战指南
  • 为什么顶尖量子工程师都在用VSCode跑Jupyter?,真相就在这6个片段中
  • 在 Oracle EBS R12.2.13 中调用 oe_order_pub.process_order创建销售订单时遇到的间歇性错误(返回状态为 “U“)
  • RookieAI_yolov8:基于YOLOv8的计算机视觉辅助系统技术解析
  • day 32 函数的定义和参数
  • 时间与时间戳
  • macOS iSCSI存储革命:打破物理限制的智能扩展方案
  • Scribd电子书下载终极指南:轻松实现PDF永久收藏
  • Canal-deployer1.1.8监听mysql数据变化(windows)
  • Java 存储钱取钱作业