TypeScript(Node.js)生产部署最佳实践:项目部署文件选择问询
TypeScript项目生产部署的文件选择方案
先明确你的场景:
初始TS项目结构:
node_modules/ src/ | app.ts package.json tsconfig.json
执行基础构建后,项目结构新增了编译后的dist目录:
dist/ | app.js node_modules/ src/ | app.ts package.json tsconfig.json
部署文件选择原则
不需要把所有文件都打包部署,核心是只保留生产运行必需的内容:
- 必须包含:
dist/目录:里面是编译后的JS产物,这是项目运行的核心代码- 精简后的
package.json:要调整配置,把main字段指向dist/app.js,只保留dependencies(生产依赖),删掉devDependencies(比如TypeScript、ts-node这类开发工具)
- 绝对不要包含:
src/:TS源码属于开发产物,生产环境不需要node_modules/:依赖包在部署时通过npm install --production重新安装即可,打包进去会大幅增加体积tsconfig.json:这是开发阶段的编译配置,生产环境用不上
针对本地库依赖问题的优化
你提到把package.json放进dist作为独立包时,难以引入本地库,这里给两个可行方案:
- 先把本地库打包成可发布的包(比如用
tsc编译后生成自己的dist和package.json),部署时在项目的package.json里通过相对路径或者私有仓库地址依赖这个本地库的编译产物 - 如果是同项目内的多包结构,用TypeScript的
project references配置,构建时自动把依赖的本地库产物同步到项目的dist目录,避免部署时依赖源码
推荐的部署流程
- 构建时用工具(比如
tsup、rollup)自动完成:编译TS到dist,复制精简后的package.json到dist,剔除dev依赖 - 把
dist目录作为部署包上传到服务器 - 在服务器执行
npm install --production安装生产依赖 - 启动服务(比如
node dist/app.js)
内容的提问来源于stack exchange,提问作者Nathanaël Spriet
相关产品推荐
相关产品推荐

