在通天7外部进口没有得到transpiled

问题描述 投票:11回答:2

我目前正在迁移一个代码库从巴贝尔6至7的代码是由自己CONFIGS多个单独的项目。

该项目mainexternal但剧本是从externalmain进口导入的文件不被transpiled和失败的“意外令牌导入”。直接位于main脚本没有正确transpile。

我使用的是main项目中下面的命令来transpile脚本:

babel-node ./index.js

另一个项目使用的WebPack做同样的事情,正确地处理一切。

这种设置也工作得很好用巴贝尔6。


.babelrcmain

{
"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"
]}

.babelrcexternal

{
"presets": [
    "@babel/preset-react"
],
"plugins": [
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-object-rest-spread",
    "@babel/plugin-transform-runtime"
]}

我创建了一个例子来详细我的问题在:

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


TL; DR我试图从一个项目的根目录之外的进口脚本,但他们没有得到由巴贝尔transpiled,从项目中的脚本做transpile。

node.js babeljs
2个回答
4
投票

我已经成功通过以下this注释来解决这个问题。

解决的办法是:

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

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

巴贝尔7似乎只允许目录中的巴别塔的配置是内进口,但是明确地设置--ignore标志覆盖此。

您可以查看我的working demo和我改为得到它的工作的diff

issue仍然在GitHub上打开,这样有可能在未来更好的解决方案。


1
投票

当前目录的.babelrc不会被加载,而在外部目录导入文件时,您可能会发生在该目录.babelrc和相对路径(而不是短名称)设置其presets

{ “预置”:[ “.. \垫\ node_modules \巴别预置-ENV”], “retainLines”:真}

© www.soinside.com 2019 - 2024. All rights reserved.