新建项目
脚本
mkdir test-koa
cd test-koa
pnpm init -y
修改type为module
package.json
{
"name": "test-koa",
"version": "1.0.0",
"description": "",
"main": "src/index.js",
"type": "module",
"scripts": {
....
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
...
},
"dependencies": {
...
}
}
安装依赖
pnpm i -D @babel/cli @babel/core @babel/node @babel/preset-env @babel/register eslint nodemon log4js cross-env
pnpm i koa koa-router
新建文件
项目根目录/src/index.js
import Koa from "koa";
import KoaRouter from "koa-router";
import log4js from 'log4js'
// 日志配置
const logger = log4js.getLogger()
logger.level = "debug";
const app = new Koa();
const router = new KoaRouter();
router.get("/", async ctx => {
logger.debug('debug日志')
logger.info('info日志')
ctx.body = "good Index";
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000);
logger.info('koa服务启动, 监听端口: 3000')
项目根目录/nodemon.json
{
"exec": "npm run dev",
"watch": ["src/*"],
"ext": "js, html, css, json"
}
这里的exec指定的是package.json中scripts
最终的package.json
{
"name": "test-koa",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"build": "babel src --out-dir dist",
"dev": "babel-node ./src/index.js",
"watch": "nodemon"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/cli": "^7.17.6",
"@babel/core": "^7.17.9",
"@babel/node": "^7.16.8",
"@babel/preset-env": "^7.16.11",
"@babel/register": "^7.17.7",
"cross-env": "^7.0.3",
"eslint": "^8.13.0",
"nodemon": "^2.0.15"
},
"dependencies": {
"koa": "^2.13.4",
"koa-router": "^10.1.1",
"log4js": "^6.4.5"
}
}
package.json中命令说明
- build: 产生 dist 目录,这个目录里面的代码就是我们应用于生产环境的编译代码。
- dev: 本地开发启动koa服务
- watch: 本地开发启动koa服务,并在文件内容变动时,重新启动koa服务
watch命令会读取nodemon.json文件中的配置