tsc - 不编译别名路径

Posted

技术标签:

【中文标题】tsc - 不编译别名路径【英文标题】:tsc - doesn't compile alias paths 【发布时间】:2020-03-29 11:28:42 【问题描述】:

我有打字稿并使用别名。 这是 tsconfig.json 的一部分

"compilerOptions": 
  "baseUrl": "./src",
   ...
,

通过设置base url,我可以改变

import User from "src/models/User.model.ts"

import User from "models/User.model.ts"

问题是 tsc 将 src 文件夹编译为 dist 文件夹,因此用户导入路径应更改为相对路径,如下所示:

"../models/User.model.js"

但它没有改变,所以我收到以下错误:

"models/User.model.js" not found

我搜索了答案,但没有运气。

【问题讨论】:

【参考方案1】:

关于这方面的打字稿问题讨论了很长时间,我似乎找不到比这更好的解决方案。

发展

npm i -save-dev tsconfig-paths/register

tsconfig.json


 "compilerOptions": 
    "baseUrl": ".",
    "paths": 
      "@src/*": ["src/*"],
    ,   
  

package.json

"scripts": 
  dev: "ts-node -r tsconfig-paths/register src/index.ts"

构建

npm i -save-d ttypescript @zerollup/ts-transform-paths

tsconfig.json


 "compilerOptions": 
    "baseUrl": ".",
    "paths": 
      "@src/*": ["src/*"],
    ,
    "plugins": [
      
          "transform": "@zerollup/ts-transform-paths",
      
    ]
  

package.json

"scripts": 
  build: "ttsc -P ./tsconfig.json"

【讨论】:

【参考方案2】:

ttypescript

typescript-transform-paths

babel-plugin-module-resolver

package.json 部分

"build": "ttsc && babel dist -d dist",

ttsc 不是错误,它是 typescript 配置之上的插件,用于更复杂的转译

tsconfig.json 部分

"outDir": "dist",
"baseUrl": "./",
"paths": 
    "@/*": [
        "./src/*"
    ],
    "$/*": [
        "./tests/unit/*"
    ]
,
"plugins": [
    
        "transform": "typescript-transform-paths",
        "afterDeclarations": true
    
],

.babelrc全部内容


  "compact": false,
  "retainLines": true,
  "minified": false,
  "inputSourceMap": false,
  "sourceMaps": false,
  "plugins": [
    [
      "module-resolver",
      
        "root": ["./dist"],
        "alias": 
          "@": "./dist"
        
      
    ]
  ]


【讨论】:

解释这些存储库的用途是什么? 我认为那些 repo-s 的 README 文件会对你有所帮助) 这看起来工作得很好!不幸的是,typescript-transform-paths 在 TS 4.0 中不起作用:github.com/LeDDGroup/typescript-transform-paths/issues/68 目前为止我发现的最佳替代方案是:github.com/joonhocho/tscpaths @SeizeTheDay 在您发表评论一周后推出了对 TS 4+ 的支持 ?

以上是关于tsc - 不编译别名路径的主要内容,如果未能解决你的问题,请参考以下文章

TS自动编译

如何在 Windows 上的“观察输出文件”模式 (tsc -w) 下使用 TypeScript 编译器?

TypeScript 通过 tsc 命令:输出到单个文件而不连接

typeScript的安装编译

找不到 Typescript 编译器:命令“tsc”无效

无法使用 tsc 节点模块编译打字稿