Node.js环境搭建及前后端应用初始化
环境准备
安装和配置 pnpm
执行命令:npm install -g pnpm
执行命令: pnpm setup , 会出现如下:
Appended new lines to /Users/jie.xu/.zshrc
Next configuration changes were made:
export PNPM_HOME="/Users/jie.xu/Library/pnpm"
case ":$PATH:" in
*":$PNPM_HOME:"*) ;;
*) export PATH="$PNPM_HOME:$PATH" ;;
esac
To start using pnpm, run:
source /Users/jie.xu/.zshrc
按要求执行一下 source 命令: source ~/.zshrc
然后指定 pnpm 的版本,可以用 LTS 版本: pnpm env use --global lts
或者最新版本:pnpm env use --global latest
创建并启动项目
创建应用
找到合适的目录,比如我这里是: ~/coding/full-stack/3rclass/chapter1:
执行命令:mkdir nodeapp && cd $_ 创建应用目录并打开目录
pnpm init 初始化一个node应用以生成package.json
pnpm add fastify 安装fastify框架
执行完之后,大概目录结构如下:
(base) ➜ nodeapp tree
.
├── node_modules
│ └── fastify -> .pnpm/fastify@4.28.1/node_modules/fastify
├── package.json
└── pnpm-lock.yaml
3 directories, 2 files
安装typescript和node类型库: pnpm add -D typescript @types/node
(base) ➜ nodeapp tree
.
├── node_modules
│ ├── @types
│ │ └── node -> ../.pnpm/@types+node@20.14.9/node_modules/@types/node
│ ├── fastify -> .pnpm/fastify@4.28.1/node_modules/fastify
│ └── typescript -> .pnpm/typescript@5.5.3/node_modules/typescript
├── package.json
└── pnpm-lock.yaml
6 directories, 2 files
初始化typescript以生成tsconfig.json: pnpm --package=typescript dlx tsc --init
配置 TS
把以下配置放入tsconfig.json中。tsconfig.json此处并非作为真正的ts -> js的编译过程的配置文件,而仅仅作为vscode的ts-server的代码编辑和检测功能以及eslint的ts解析器的配置使用
对于这些TS的每个配置的作用,不在本课的解释范围内,请自行查看此处官网文档
{
"$schema": "https://json.schemastore.org/tsconfig",
"compilerOptions": {
"strict": true,
"alwaysStrict": true,
"target": "esnext",
"module": "commonjs",
"moduleResolution": "Node",
"allowJs": true,
"noEmit": false,
"declaration": true,
"declarationMap": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": true,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": false,
"isolatedModules": true,
"esModuleInterop": true,
"noUnusedLocals": true,
"noImplicitReturns": true,
"pretty": true,
"resolveJsonModule": true,
"importsNotUsedAsValues": "remove",
"baseUrl": ".",
"outDir": "./dist",
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src", "test", "typings/**/*.d.ts", "**/*spec.ts", "**.js"]
}
添加一个tsconfig.build.json文件,作为ts -> js 的编译工作配置,其内容如下
{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "dist", "**/*spec.ts", "**.js"]
}
此处我们排除了**.js,以防止.eslintrc.js等文件被编译进应用中,而在tsconfig.json中我们需要加上才可以自动格式化这些文件。因为eslint是使用tsconfig.json作为ts的解析配置的
bun
为了在开发时直接运行ts文件并且实现热重载,我们使用bun
安装:curl https://bun.sh/install | bash
添加到 Path: export PATH="$HOME/.bun/bin:$PATH"
source: source ~/.zshrc # or source ~/.bashrc depending on your shell
检查:
(base) ➜ nodeapp bun --version
1.1.18
此处使用bun纯粹是为了方便,如果需要类型检测则可以使用ts-node+nodemon来代替。关于bun和nodemon我们后续会在课程中专门讲解
此处不在全局中安装bun,而是简单地在项目中安装.同时,添加了bun的typescript类型库:
pnpm add bun @types/bun -D
(base) ➜ nodeapp tree
.
├── node_modules
│ ├── @types
│ │ ├── bun -> ../.pnpm/@types+bun@1.1.6/node_modules/@types/bun
│ │ └── node -> ../.pnpm/@types+node@20.14.9/node_modules/@types/node
│ ├── bun -> .pnpm/bun@1.1.18/node_modules/bun
│ ├── fastify -> .pnpm/fastify@4.28.1/node_modules/fastify
│ └── typescript -> .pnpm/typescript@5.5.3/node_modules/typescript
├── package.json
├── pnpm-lock.yaml