我刚刚开始使用打字稿并尝试让模块解析工作。我的问题非常简单(我认为),但我不确定我的tsconfig.json
出了什么问题。
如果我的文件夹结构为:
+ release
+ definitions
+ js
> a.js
> main.js
+ src
> main.ts
> a.ts
使用gulp,我在gulp示例中正在做incremental compilation。
我的tsconfig.json
是:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": ".",
"paths": {
"src/*": [
"./src/*"
]
}
},
"files": [
"src/main.ts"
],
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
我正在尝试允许src目录的别名为src/module_name
,因此分辨率可以正常用于import foo from 'src/la/ja'
之类的内容。因此,如果我在一个深层嵌套的文件中,例如src/something/other/foo.ts
,并且我想从src中的utils文件夹导入一些东西,我可以避免杂乱的路径import bar from '../../../utils/bar'
,只做from 'src/utils/bar'
。
在我的main.ts
内,我正试着:
import { a } from 'src/a'
使用正确的相对目录进行编译。使用我当前的tsconfig.json
,这解析(定义似乎很好)并且不会抛出任何linting错误,但是当它编译时 - 它编译为:
const a_1 = require("src/a");
而不是
const a_1 = require("./a");
因此,在尝试运行它时失败,因为src/
中找不到release/js/
。有没有办法强制打字稿编译成相对路径?
答案 0 :(得分:0)
我在用gulp设置双栈(js + ts)编译器时遇到了这个问题,该软件包可以帮助:https://www.npmjs.com/package/gulp-typescript-path-resolver