Путь Вавилона к Абсолютному Пути - PullRequest
0 голосов
/ 23 апреля 2020

Я сталкиваюсь с очень странным поведением трансплантации вавилонского тракта. в моем проекте некоторые модули называются следующим образом:

import module from '~modulename'

, где ~ означает импорт данного 'modulename' из root каталога проекта. Теперь, как это работает для dev (babel-node для запуска проекта). но когда я запускаю babel src -d lib в моем проекте для переноса es6 js, все преобразуется (транслируется), но этот путь не так в сборке, я всегда остаюсь с require('~modulename') вместо require('../../...modulename').

Решения, которые я пробовал

  1. алиасинг ~ к ./ в babel.config. js через модуль-resolver-plugin

Babel.config. js

module.exports = __babel => {
  // Use cache.
  __babel.cache(true)

  // Return configuration.
  return {
    'presets': [
      [
        '@babel/preset-env',
        {
          'modules': false
        }
      ]
    ],
    'plugins': [
      '@babel/plugin-proposal-throw-expressions',
      '@babel/plugin-proposal-export-default-from',
      'dynamic-import-node',
      'babel-plugin-root-import',
      ['babel-plugin-module-resolver', { 'alias': { '~': './' } }]
      ['module-resolver', { 'root': ['./', 'packages/*'] }],
      ['@babel/plugin-transform-modules-commonjs', { 'allowTopLevelThis': true }],
      ['@babel/plugin-transform-runtime', { 'regenerator': true }]
    ],
    'env': {
      'production': {
        'presets': ['minify'],
        'plugins': [
          'transform-remove-console',
          'minify-dead-code-elimination'
        ]
      }
    }
  }
}
...