Babel 7中的外部进口不会被转化

ner*_*man 12 node.js babeljs

我目前正在将代码库从Babel 6迁移到7.代码由多个具有自己配置的单个项目组成.

main项目从文件导入external但是从导入的脚本externalmain不被transpiled和失败的"意外令牌导入".位于直接在脚本main 正确transpile.

我在项目中使用以下命令main来转换脚本:

babel-node ./index.js
Run Code Online (Sandbox Code Playgroud)

另一个项目使用Webpack做同样的事情并正确处理所有事情.

这个设置也适用于Babel 6.


.babelrc 对于 main

{
"ignore": [
    "node_modules"
],
"presets": [
    ["@babel/preset-env", {
        "targets": {
            "node": "current"
        },
        "useBuiltIns": "entry"
    }]
],
"plugins": [
    [
        "module-resolver", {
            "alias": {
                "External": "../external"
            }
        }
    ],
    "@babel/plugin-proposal-decorators",
    "@babel/plugin-proposal-object-rest-spread",
    "@babel/plugin-proposal-export-default-from",
    "@babel/plugin-proposal-export-namespace-from",
    "@babel/plugin-proposal-class-properties"
]}
Run Code Online (Sandbox Code Playgroud)

.babelrc 对于 external

{
"presets": [
    "@babel/preset-react"
],
"plugins": [
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-object-rest-spread",
    "@babel/plugin-transform-runtime"
]}
Run Code Online (Sandbox Code Playgroud)

我创建了一个示例来详细说明我的问题:

https://gitlab.com/nerdyman/babel-7-external-import-broken


TL; DR我正在尝试从项目的根目录之外导入脚本,但它们不会被Babel转换,项目中的脚本确实会发生变化.

ner*_*man 5

我已经按照评论设法解决了这个问题。

解决办法是:

  1. .babelrc主项目移入babel.config.js并使其成为 CommonJS 模块
  2. 从主项目--ignore=node_modules运行时添加babel-node

这似乎仍然相当哈克和巴贝尔似乎并不承认ignore财产之内babel.config.js必须被指定为标志。

Babel 7 似乎只允许在 babel 配置所在的目录中导入,但是明确设置--ignore标志会覆盖这一点。

您可以查看我的工作演示以及我为使其工作所做的更改的差异

问题在 GitHub 上仍处于开放状态,因此将来可能会有更好的解决方案。