首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tsc -不编译别名路径

tsc -不编译别名路径
EN

Stack Overflow用户
提问于 2019-12-04 23:47:07
回答 3查看 8.7K关注 0票数 12

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

代码语言:javascript
复制
"compilerOptions": {
  "baseUrl": "./src",
   ...
},

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

代码语言:javascript
复制
import User from "src/models/User.model.ts"

代码语言:javascript
复制
import User from "models/User.model.ts"

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

代码语言:javascript
复制
"../models/User.model.js"

但是它没有改变,所以我得到了以下错误:

代码语言:javascript
复制
"models/User.model.js" not found

我寻找了答案,但没有找到答案。

EN

回答 3

Stack Overflow用户

发布于 2021-03-12 08:50:19

在typescript中关于这个问题有很长的讨论,我似乎找不到比这个更好的解决方案。

开发

代码语言:javascript
复制
npm i -save-dev tsconfig-paths/register

tsconfig.json

代码语言:javascript
复制
{
 "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@src/*": ["src/*"],
    },   
  }
}

package.json

代码语言:javascript
复制
"scripts": {
  dev: "ts-node -r tsconfig-paths/register src/index.ts"
}

Build

代码语言:javascript
复制
npm i -save-d ttypescript @zerollup/ts-transform-paths

tsconfig.json

代码语言:javascript
复制
{
 "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@src/*": ["src/*"],
    },   
  }
 "plugins": [
      {
          "transform": "@zerollup/ts-transform-paths",
      }
  ],
}

package.json

代码语言:javascript
复制
"scripts": {
  build: "ttsc -P ./tsconfig.json"
}
票数 8
EN

Stack Overflow用户

发布于 2019-12-18 15:01:16

ttypescript

typescript-transform-paths

babel-plugin-module-resolver

package.json部件

代码语言:javascript
复制
"build": "ttsc && babel dist -d dist",

ttsc不是一个错误,它是一个插件,而不是typescript配置,用于更复杂的转换

tsconfig.json部件

代码语言:javascript
复制
"outDir": "dist",
"baseUrl": "./",
"paths": {
    "@/*": [
        "./src/*"
    ],
    "$/*": [
        "./tests/unit/*"
    ]
},
"plugins": [
    {
        "transform": "typescript-transform-paths",
        "afterDeclarations": true
    }
],

.babelrc全部内容

代码语言:javascript
复制
{
  "compact": false,
  "retainLines": true,
  "minified": false,
  "inputSourceMap": false,
  "sourceMaps": false,
  "plugins": [
    [
      "module-resolver",
      {
        "root": ["./dist"],
        "alias": {
          "@": "./dist"
        }
      }
    ]
  ]
}
票数 4
EN

Stack Overflow用户

发布于 2022-01-29 12:08:10

TSC编译器单独的不能解析别名路径。因此,为了使它工作,您将需要安装额外的开发包

代码语言:javascript
复制
npm install --save-dev tsc-alias

tsc-alias用于在tsc编译器的typescript编译后将别名路径替换为相对路径,因为编译器本身无法解析别名路径

之后,您需要将package.json文件中的构建命令修改为

代码语言:javascript
复制
"build": "tsc && tsc-alias",

运行npm run build之后应该可以工作,代码应该被正确地编译成javascript

如果您想同时启用热重新加载,您将需要再安装一个开发包

代码语言:javascript
复制
npm install --save-dev concurrently

concurrently用于并发运行多个命令

之后,您需要在package.json文件中添加1个新的脚本

代码语言:javascript
复制
"build:watch": "concurrently --kill-others \"tsc -w\" \"tsc-alias -w\"",

运行npm run build:watch之后应该可以工作,代码应该被正确编译为具有热重新加载功能的javascript

请注意:我使用的是此版本的软件包

代码语言:javascript
复制
"tsc-alias": "^1.5.0",
"typescript": "^4.5.5",
"concurrently": "^7.0.0",

较旧或较新的版本可能会引入一些编译代码的问题

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59179787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档