tsc-不编译别名路径

时间:2019-12-04 15:47:06

标签: typescript tsc tsconfig tsconfig-paths

我有打字稿,并使用别名。 这是tsconfig.json

的一部分
"compilerOptions": {
  "baseUrl": "./src",
   ...
},

通过设置基本网址,我可以更改

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

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

2 个答案:

答案 0 :(得分:4)

打字稿问题对此进行了长时间的讨论,我似乎找不到比这更好的解决方案。

开发

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"
}

答案 1 :(得分:0)

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"
        }
      }
    ]
  ]
}