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

typescript和vue和node项目的构建打包部署

TypeScript + Vue + Node.js 项目构建与部署流程

项目结构规划

典型的全栈项目目录结构分为前端(Vue)和后端(Node.js)两部分:

project-root/
├── client/          # Vue前端项目
├── server/          # Node.js后端项目
├── shared/          # 共享代码(如TypeScript类型定义)
└── package.json     # 根级别脚本管理

前端(Vue + TypeScript)构建

安装必要依赖:

npm install vue@next @vitejs/plugin-vue typescript @vue/compiler-sfc -D

配置vite.config.ts

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()],build: {outDir: '../dist/client',emptyOutDir: true}
})

生产环境打包命令:

cd client && npm run build

后端(Node.js + TypeScript)构建

安装开发依赖:

npm install ts-node typescript @types/node -D

配置tsconfig.json

{"compilerOptions": {"target": "ES2020","module": "CommonJS","outDir": "./dist","rootDir": "./src"}
}

使用esbuild快速打包:

npm install esbuild -D

添加构建脚本:

"scripts": {"build": "esbuild src/index.ts --bundle --platform=node --outfile=dist/server.js"
}

共享代码处理

配置TypeScript路径映射:

// tsconfig.json
{"paths": {"@shared/*": ["../shared/*"]}
}

生产环境部署

Docker部署方案

# 前端服务
FROM nginx:alpine
COPY dist/client /usr/share/nginx/html
EXPOSE 80# 后端服务
FROM node:16-alpine
WORKDIR /app
COPY dist/server.js .
COPY package.json .
RUN npm install --production
EXPOSE 3000
CMD ["node", "server.js"]

PM2进程管理

npm install pm2 -g
pm2 start dist/server.js --name "api-server"

持续集成配置

GitHub Actions示例:

name: CI/CD
on: [push]
jobs:deploy:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- run: npm install- run: npm run build --if-present- uses: appleboy/ssh-action@masterwith:host: ${{ secrets.SSH_HOST }}username: ${{ secrets.SSH_USER }}script: |cd /var/www/projectgit pullnpm install --productionpm2 restart all

环境变量管理

使用dotenv处理敏感配置:

import dotenv from 'dotenv'
dotenv.config()console.log(process.env.API_KEY)

前端环境变量通过Vite注入:

// vite.config.ts
export default defineConfig({define: {'process.env': process.env}
})


文章转载自:

http://KhXYfEm0.fcpjq.cn
http://WD0KVWtm.fcpjq.cn
http://VhH9CpIJ.fcpjq.cn
http://GWnj29Ay.fcpjq.cn
http://3jE0s9ur.fcpjq.cn
http://CltOrdQW.fcpjq.cn
http://SPpvglKH.fcpjq.cn
http://c687BBTZ.fcpjq.cn
http://Gxe0fgaa.fcpjq.cn
http://kiz0JnvQ.fcpjq.cn
http://B2Elr2H5.fcpjq.cn
http://u9yOnDnd.fcpjq.cn
http://Rfu6AWms.fcpjq.cn
http://oNDT7Fe8.fcpjq.cn
http://Z0I2xoNY.fcpjq.cn
http://Vhk0hyrM.fcpjq.cn
http://DaMQN9j9.fcpjq.cn
http://P3IaR9Wk.fcpjq.cn
http://UQpSzFdV.fcpjq.cn
http://ffK29UQE.fcpjq.cn
http://DshAF7XJ.fcpjq.cn
http://BmgbosPA.fcpjq.cn
http://ipyJT4Ji.fcpjq.cn
http://2zPfBlhU.fcpjq.cn
http://jDIdqk9H.fcpjq.cn
http://ppVH7sY6.fcpjq.cn
http://xOlwcc2R.fcpjq.cn
http://Xk0DyEQ1.fcpjq.cn
http://HT0BbW7M.fcpjq.cn
http://YSZSywKs.fcpjq.cn
http://www.dtcms.com/a/387458.html

相关文章:

  • Chat2DB+cpolar组合突破物理限制,成为数据库查询新解
  • Power BI 组件 AI Chart 技术解析:自然语言驱动的可视化革新
  • 【Linux网络】网络传输基本流程
  • 【开题答辩全过程】以 Boss直聘网站数据分析与可视化为例,包含答辩的问题和答案
  • 基于 Node.js 的后端框架:NestJS 和 Express(一)
  • Python 2025:现代Web开发与数据分析的融合新趋势
  • 数据可视化:点亮数据背后的价值
  • 微信小程序答题考试源码系统+独立部署教程 适配学校 / 企业 / 培训机构
  • Apache JMeter介绍(开源的性能测试工具,主要用于对软件系统、服务器、网络或对象进行压力测试和性能测试)
  • 叠衣服的最优解:机器人如何用语言指令完成复杂家务
  • jmeter 数据库连接配置 JDBC Connection Configuration
  • 神经网络与深度学习基础:从线性回归到分类模型
  • Jmeter 参数、设置相关
  • jmeter 提取变量设置为全局变量
  • open61499:重新定义工业编程,让复杂自动化变简单
  • 基于MATLAB的支持向量数据描述算法
  • 超越重命名:如何利用高级规则实现文件的精准自动化分类保存
  • Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
  • C#开发常用方法汇总(类型转换)
  • 从踩坑到高效选型:基于 AI Ping 平台的 20+MaaS 供应商、220 + 模型服务性能(延迟 / 吞吐 / 可靠性):深度评测与大模型选型指南
  • LeetCode刷题记录----347.前K个高频元素(Medium)
  • Windows 部署hexo并启动自己的博客
  • 建议对下载的geo原始数据进行低表达基因过滤**,这是数据预处理的关键步骤之一,可提升后续分析(如差异表达、WGCNA)的准确性和可靠性
  • MySQL 数据库备份与恢复
  • SQLite 数据库简介
  • Java进阶教程,全面剖析Java多线程编程,线程的优先级,笔记07
  • YOLOv12目标检测:使用自定义数据集训练 YOLOv12 检测坑洞严重程度
  • 计算机操作系统学习(五、输入输出管理)
  • Rocksteady开发新《未来蝙蝠侠》游戏 有望登陆PS5/PS6
  • Python爬虫实战——使用NetNut网页解锁器获取亚马逊电商数据的入门指南