如何将TypeScript编译为使用ES6模块的JS?

3
我的`tsconfig.json`文件包含:
{
    "compilerOptions": {
        "module": "esnext",
        "target": "esnext",
    }
}

但编译后的JS文件仍使用exports/require语法。

我该如何解决这个问题?

编辑:

我的目录结构如下:

- APIs/
  - emails/
    - sendEmail.ts
  - oldFiles/
    - file1.js
    - file2.js
- index.js
- tsconfig.json
- package.json

我正在使用命令tsc APIs/emails/sendEmail.ts从根目录运行tsc


你是如何调用 tsc 的? - T.J. Crowder
从根文件夹中,我调用 tsc a/b/c/file.tstsconfig.json 在根文件夹中)。 - Will Zap
您的编辑确认了我的答案。通过这种方式调用tsc,您没有使用您的tsconfig.json。(这很令人惊讶,但是确实如此)。只需使用适当的includes(请参见答案),而不是提供特定的文件,就可以使用tsc - T.J. Crowder
2个回答

3
那些设置是正确的,所以很可能你并没有实际使用那个 tsconfig.json 文件。例如,如果你执行 tsc someFile.tstsc 就不会使用 tsconfig.json(令人惊讶)。你最好的选择可能是将 includes 添加到你的配置中(这样 tsc 就知道它正在编译什么),然后通过调用 tsc 来简单地进行编译,这将会查找本地的 tsconfig.json
{
    "compilerOptions": {
        "module": "esnext",
        "target": "esnext"
    },
    "include": ["**/*.ts"]
}

然后在package.json中(例如):

// ...
"scripts": {
    "build": "tsc"
}
// ...

另外,我该如何排除.js文件的编译?我只需将** / *.js添加到“exclude”字段中吗? - Will Zap
@WillZap - 是的,或者我通常会将输出到完全不同的目录(dist),并将其排除在外。 - T.J. Crowder

-1

这个配置应该可以工作。但是它应该使用tsconfig.json而不是tsconfig.js


哦,这是tsconfig.json,在问题中打错了字。 - Will Zap
@WillZap请展示你的目录结构以及你运行tsc命令的位置。 - BigLiao
我编辑了问题,展示了我的目录结构以及如何运行tsc - Will Zap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接