aha*_*tiz 10 typescript tsc tsconfig tsconfig-paths
我有打字稿并使用别名。这是 tsconfig.json 的一部分
"compilerOptions": {
"baseUrl": "./src",
...
},
Run Code Online (Sandbox Code Playgroud)
通过设置基本网址,我可以改变
import User from "src/models/User.model.ts"
Run Code Online (Sandbox Code Playgroud)
到
import User from "models/User.model.ts"
Run Code Online (Sandbox Code Playgroud)
问题是 tsc 将 src 文件夹编译为 dist 文件夹,因此用户导入路径应更改为相对路径,如下所示:
"../models/User.model.js"
Run Code Online (Sandbox Code Playgroud)
但它没有改变,所以我收到以下错误:
"models/User.model.js" not found
Run Code Online (Sandbox Code Playgroud)
我搜索了答案,但没有运气。
Tat*_*rba 63
仅 TSC 编译器无法解析别名路径。因此,为了使其正常工作,您将需要安装额外的开发包
npm install --save-dev tsc-alias
Run Code Online (Sandbox Code Playgroud)
tsc-alias用于在 tsc 编译器进行打字稿编译后用相对路径替换别名路径,因为编译器本身无法解析别名路径
之后,您需要将package.json文件中的构建命令修改为
"build": "tsc && tsc-alias",
Run Code Online (Sandbox Code Playgroud)
npm run build之后运行应该可以工作,并且代码应该正确编译为 javascript
如果您还想启用热重载,则需要再安装一个开发包
npm install --save-dev concurrently
Run Code Online (Sandbox Code Playgroud)
同时用于同时运行多个命令
之后,您需要在package.json文件中添加 1 个新脚本
"build:watch": "concurrently --kill-others \"tsc -w\" \"tsc-alias -w\"",
Run Code Online (Sandbox Code Playgroud)
npm run build:watch之后运行应该可以工作,并且代码应该正确编译为具有热重载功能的 JavaScript
请注意: 我正在使用此版本的软件包
"tsc-alias": "^1.5.0",
"typescript": "^4.5.5",
"concurrently": "^7.0.0",
Run Code Online (Sandbox Code Playgroud)
旧版本或新版本可能会在编译代码时引入一些问题
小智 6
关于这个的打字稿问题有很长的讨论,我似乎找不到比这更好的解决方案。
发展
npm i -save-dev tsconfig-paths/register
Run Code Online (Sandbox Code Playgroud)
配置文件
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@src/*": ["src/*"],
},
}
}
Run Code Online (Sandbox Code Playgroud)
包.json
"scripts": {
dev: "ts-node -r tsconfig-paths/register src/index.ts"
}
Run Code Online (Sandbox Code Playgroud)
建造
npm i -save-d ttypescript @zerollup/ts-transform-paths
Run Code Online (Sandbox Code Playgroud)
配置文件
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@src/*": ["src/*"],
},
}
"plugins": [
{
"transform": "@zerollup/ts-transform-paths",
}
],
}
Run Code Online (Sandbox Code Playgroud)
包.json
"scripts": {
build: "ttsc -P ./tsconfig.json"
}
Run Code Online (Sandbox Code Playgroud)
小智 5
package.json部分
"build": "ttsc && babel dist -d dist",
Run Code Online (Sandbox Code Playgroud)
ttsc不是一个错误,它是一个基于打字稿配置的插件,用于更复杂的转译
tsconfig.json部分
"outDir": "dist",
"baseUrl": "./",
"paths": {
"@/*": [
"./src/*"
],
"$/*": [
"./tests/unit/*"
]
},
"plugins": [
{
"transform": "typescript-transform-paths",
"afterDeclarations": true
}
],
Run Code Online (Sandbox Code Playgroud)
.babelrc全部内容
{
"compact": false,
"retainLines": true,
"minified": false,
"inputSourceMap": false,
"sourceMaps": false,
"plugins": [
[
"module-resolver",
{
"root": ["./dist"],
"alias": {
"@": "./dist"
}
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6996 次 |
| 最近记录: |