Babel无法编译所有文件。

4
我正在使用Babel 7 + Typescript运行一个新项目。我正在学习Typescript,并将它们结合起来是一个相当大的挑战。我设法做到了,但仍然有一个问题。
当我编译我的项目时,所有来自./src/的.ts文件都会转换为./dist/中的.js文件。所有点文件都被忽略,这是可以预料的。然而,在./src/中没有.ts扩展名的所有文件也被忽略了。
以下是我尝试过的许多命令之一:
// package.json
"scripts": {
    // build1 compiles only the .js files
    "build1": "babel src --out-dir dist",

    // build2 compiles only the .ts files
    "build2": "babel src --out-dir dist --extensions \".ts\"",

    //build 3 compiles only the .ts files
    "build3": "babel src --out-dir dist --extensions \".ts, .js\"",

    //build 4 compiles only the .js files
    "build4": "babel src --out-dir dist --extensions \".js, .ts\""
},

这是我的Babel配置文件:
// babel.config.js
module.exports = {
  presets: [
    "@babel/env",
    "@babel/typescript",
  ],
  plugins: [
    "transform-dynamic-import",
    "@babel/proposal-class-properties",
    "@babel/proposal-object-rest-spread"
  ],
};

有什么想法吗?

非常感谢!

更新:从--extension参数中删除空格是有效的,但现在我有一个以前没有注意到的副作用。当运行命令"babel src --out-dir dist --extensions \".ts,.js,.json\""时,我发现.json文件也被转换为.js。 我希望 Babel 将 .ts 转换为 .js,编译 .js 文件并将其他任何文件原样复制。


1
一个快速的猜测:--extensions 参数中的空格是否被视为扩展名的一部分并阻止了匹配?尝试将其删除。 - Matt McCutchen
谢谢你的提示,这是很好的信息 :) 但不幸的是,我现在观察到我的所有文件都被转换为 .js,甚至是 .json 文件(请参见我上面的更新)。 - user7663281
1个回答

11

我终于找到了解决方案。我必须在命令中添加 --copy-files 参数。

babel src --out-dir dist --extensions \".ts,.js\" --copy-files

--extensions \".ts,.js\" 告诉 babel 编译所有 .ts 和 .js 文件。

--copy-files 告诉 babel 复制所有其他文件。


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