Настроить пользовательский «корневой» каталог с помощью «babel-plugin-module-resolver»?

#javascript #babeljs #babel-plugin #babel-plugin-module-resolver

#javascript #babeljs #babel-плагин #babel-plugin-module-resolver

Вопрос:

Вот структура моего проекта:

 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/src все неправильные на 1 уровень), либо наоборот.

Например:

.cloudRun/babel.config.js

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

Это работает для ./src файлов. Но все файлы из ./cloudRun/src неверны на 1 уровень выше.

А если я перейду на это:

.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