3

这是我的项目结构:

cloudRun
  distApp          // TRANSPILED APP FILES FROM ./src
  distService      // TRANSPILED BACKEND FILES FROM ./cloudRun/src
  src              // SOURCE FILES FOR THE BACKEND CODE
    index.js       // INDEX.JS FOR THE BACKEND CODE
  babel.config.js  // CONFIG FOR THE BABEL TRANSPILE SCRIPT
src                // SOURCE FILES FOR THE APP
  index.js         // INDEX.JS FOR THE APP CODE
package.json       // THIS IS THE MAIN PROJECT package.json

我会尽量简洁明了。

index.js(应用程序和后端代码)中,我都在源代码中使用路径别名。

例如:

./src/some-folder/some-file.js

import xxx from "@src/hooks/someHoot";

// IN THE TRANSPILED VERSION @src MUST BE CONVERTED TO ./cloudRun/distApp

还有,例如:

./cloudRun/src/some-folder/some-file.js

import xxx from "@src/hooks/someHoot";

// IN THE TRANSPILED VERSION @src MUST BE CONVERTED TO ./cloudRun/distApp

但不知何故,我在配置时遇到了module-resolver麻烦babel.config.js。要么我让它与存在的路径别名一起正常工作./src(并且路径别名在./cloudRun/src1 级上都是错误的),反之亦然。

例如:

.cloudRun/babel.config.js

plugins = [
  ["module-resolver", {
    "alias": {
      "@src"   : "./distApp",
      "@hooks" : "./distApp/hooks",
    }
  }]
];

这适用于./src文件。但是来自./cloudRun/src1 级的文件都是错误的。

如果我改成这样:

.cloudRun/babel.config.js

plugins = [
  ["module-resolver", {
    "alias": {
      "@src"   : "./cloudRun/distApp",
      "@hooks" : "./cloudRun/distApp/hooks",
    }
  }]
];

然后它适用于./cloudRun/src文件。但是来自的所有文件./src都会错误 1 ​​级。

我在想我可以使用模块解析器配置"root"中的选项来解决这个问题。但我还不能让它工作。

也许是这样的:

.cloudRun/babel.config.js

plugins = [
  ["module-resolver", {
    "root": ["./cloudRun"],               // SET A NEW ROOT HERE
    "alias": {
      "@src"   : "./distApp",
      "@hooks" : "./distApp/hooks",
    }
  }]
];

我在"root"配置中尝试了很多东西。但到目前为止,它似乎没有任何区别。

这是我运行 babel 的方式:

// SCRIPTS FROM ./package.json

babel src --out-dir cloudRun/distApp --config-file ./cloudRun/babel.config.js

babel cloudRun/src --out-dir cloudRun/distService --config-file ./cloudRun/babel.config.js
4

0 回答 0