因此,我最近将typescript添加到了我的ExpressJS项目中(它对我来说仍然很神奇)。
我试图在/dist目录(.ts --〉.js)中构建一个应用程序,但它不会生成swagger.yaml文件或sequelize-cli文件夹。
在tsconfig.json中做一些更改实际上什么也不做,这对我来说真的很奇怪。
我的项目结构:
- dist/
- api/**
- classes/**
- interfaces/**
- sequelize/**
- server.ts
- src/
- api/**
- classes/**
- interfaces/**
- sequelize/**
- sequelize-cli/**
- server.ts
- swagger.yaml
- .dockerignore
- .env
- .gitignore
- .sequelizerc
- Dockerfile
- package-lock.json
- package.json
- tsconfig.json
* not important subdirectories & files
我的包裹
{
"name": "random-name",
"version": "1.0.0",
"description": "",
"main": "src/server.js",
"scripts": {
"prod": "node dist/server.js",
"dev": "npm run build && node dist/server.js",
"build": "tsc"
},
"author": "",
"license": "ISC",
"dependencies": {
"bcrypt": "^5.1.0",
"cookie-parser": "^1.4.6",
"dotenv": "^16.0.3",
"express": "^4.18.2",
"jsonwebtoken": "^8.5.1",
"mysql2": "^2.3.3",
"sequelize": "^6.25.3",
"sequelize-cli": "^6.5.2",
"swagger-ui-express": "^4.5.0",
"yamljs": "^0.3.0"
},
"devDependencies": {
"@types/bcrypt": "^5.0.0",
"@types/cookie-parser": "^1.4.3",
"@types/express": "^4.17.14",
"@types/jsonwebtoken": "^8.5.9",
"@types/node": "^18.11.5",
"@types/swagger-ui-express": "^4.1.3",
"@types/yamljs": "^0.2.31",
"nodemon": "^2.0.20",
"ts-node": "^10.9.1",
"typescript": "^4.8.4"
}
}
我的tsconfig.json:
{
"compilerOptions": {
"module": "CommonJS",
"moduleResolution": "Node",
"esModuleInterop": true,
"target": "ES6",
"removeComments": true,
"rootDir": "./src",
"outDir": "./dist",
},
"include": [ "src/**/*" ],
"exclude": [ "node_modules" ]
}
型
我不知道出了什么事
1条答案
按热度按时间raogr8fs1#
TS编译器只处理TypeScript和JavaScript文件,你需要一些捆绑器来处理其他类型的文件。但是有一个解决方案不使用捆绑器。
在
package.json
中,您可以指定一个脚本,它将1.运行TS编译器,用编译后的代码创建一个
dist
文件夹。1.将您需要的任何额外内容复制到
dist
文件夹中。1.运行代码。
此脚本的示例如下-
"start": "tsc && copyfiles -u 1 src/sequelize-cli/**/* src/swagger.yaml dist && node dist/server.js"