胖蔡说技术
随便扯扯

手把手教你怎么正确快速的部署一个TS Node.js项目!

正确快速的部署一个TS Node.js项目!

创建一个TS Node.js应用

如果你已经熟悉创建TS

Node.js项目,可以直接跳到“部署发布应用”部分。

初始化Node.js项目

在我们团队,我们非常喜欢TS,并且在我们的所有新项目中都会使用TS,因此创建一个TS项目并不新鲜。

让我们从最基本的开始:

1、初始化一个Node.js项目

可以使用-y参数可以快速跳过一步一步的配置,安装express依赖,和用于TS开发的expresstypes类型文件,安装typescript作为开发依赖,操作如下:

mkdir myapp & cd myapp
npm init -y
npm install express @types/express --save
npm install typescript --save-dev

2、配置Typescript

创建一个typescript默认配置文件tsconfig.json

npm tsc --init

tsconfig.json文件中:

  • declaration: 用于指定是否在编译完成后生成相应的*.d.ts文件,默认为false
  • outDir: 定义TS编译后的目录,如果没有声明,默认编译后的文件位置将和ts源文件在同一位置

修改以下配置:

"compilerOptions":{
   …
   "outDir": "./dist",
   "declaration": true,
}

创建项目入口文件,创建文件app.ts文件

import Express from 'express'
import cookieParser from 'cookie-parser';
import bodyParser from 'body-parser';
let app = Express();
let PORT = 3000;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());

app.get('/',(req,res)=>{
res.send('hello world!');
});

app.set('port', process.env.PORT || 3000);
let server = app.listen(app.get('port'), function () {
debug('Express server listening…');
});

完成上述步骤后,我们的文件目录结构如下:

+node_modules
-package.json
-package-lock.json
-app.ts
-tsconfig.json

3、编译TS

我们下一步是构建和部署我们的TS Node.js应用,由于在生产环境中,我们不运行TS版本,而是运行编译后的JS。下面我们来编译项目。修改package.json文件增加以下命令

"scripts": {
"tsc":"tsc",
"start": "node dist/app.js"
},

$ npm run tsc

将会根据我们tsconfig.json的配置编译我们的项目,并输出到指定目录

$ npm run start

将会运行我们编译后的JS文件.然后在本地进行测试,通过浏览器访问http://localhost:3000/,访问成功,接下来我们部署和发布我们的应用

4、部署发布应用
这里我们主要采用两种方法将编译后的TS项目分发部署到各种环境中

  • npm依赖包的形式
  • docker容器方式4

NPM依赖包的形式

NPM生命周期钩子

一些特殊的生命周期钩子会在触发指定操作时被触发,这里我们将使用“prepare”钩子,该钩子会在执行npm publish命令发布到NPM之前被触发一次。所以我们可以这时编译的TS应用。

指定发布文件

通过 “files”字段我们可以去定义发布NPM包时应该包括哪些文件,如果省略该属性默认会为[“*”],会上传所有文件。

下面是修改后的部分package.json

…
"name": "myapp",
"version": "1.0.0",
"description": "",
"main": "dist/app.js",
"files": [
"dist",
"package.json",
"package-lock.json"
],
"scripts": {
"tsc":"tsc",
"prepare":"npm run tsc",
"start": "node dist/app.js"
},
…

在修改完package.json配置后,我们运行npm publish命令,将我们的应用发布到NPM上去

$ npm publish

发布成功后,可以看到npmjs上多了一个myapp

Docker容器方式

要将我们的TS Node.js应用作为容器发布,我们要在项目根目录中创建docker配置文件Dockerfile

下面我们一步步编写Dockerfile文件:

  • 拷贝编译后的文件到容器内
  • 拷贝package.jsonpackage-lock.json到容器内
  • 使用npm install安装依赖
  • 使用node build/app.js运行我们的应用

Node版本

From node:16.15.1
ARG NODE_ENV=production
ENV NODE_ENV $NODE_ENV
copy ./dist /dist
copy ./package.json /package.json
copy ./package-lock.json /package-lock.json
RUN NODE_ENV=$NODE_ENV npm install
EXPOSE 3000
CMD ["node","dist/app.js"]

现在我们可以在根目录中构建docker镜像,运行命令

$ docker build --tag myapp:test

接着我们运行容器,使用命令来运行我们的应用,查看程序是否成功运行在3000端口

$ docker run -p 3000:3000 -it myapp:test

通过浏览器访问http://localhost:3000/,测试

赞(1) 打赏
转载请附上原文出处链接:胖蔡说技术 » 手把手教你怎么正确快速的部署一个TS Node.js项目!
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏