Я сталкиваюсь с очень странным поведением трансплантации вавилонского тракта. в моем проекте некоторые модули называются следующим образом:
import module from '~modulename'
, где ~ означает импорт данного 'modulename' из root каталога проекта. Теперь, как это работает для dev (babel-node для запуска проекта). но когда я запускаю babel src -d lib
в моем проекте для переноса es6 js, все преобразуется (транслируется), но этот путь не так в сборке, я всегда остаюсь с require('~modulename')
вместо require('../../...modulename')
.
Решения, которые я пробовал
- алиасинг ~ к ./ в 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'
]
}
}
}
}