Я пытаюсь отказаться от модуля со многими именованными экспортами, например так:
const Foo = () => 'foo';
const Bar = () => 'bar';
export { Foo };
export { Bar };
, что хорошо при потреблении через:
import { Foo, Bar } from './something';
Мои мысли о включении предупреждений об устаревании заключались в использовании экспорта объекта типа по умолчанию с переопределением получателя свойства для каждого ключа, который печатает устаревание и затем возвращает модуль.
Форма становится примерно такой:
const something = {};
Object.defineProperty(something, 'Foo', {
get(){
console.warn('Foo is deprecated soon');
return Foo;
}
});
// etc
export default something;
Я думал, что деструктивный импорт это выяснит так
import { Foo, Bar } from './something';
... продолжит работать как прежде. Вместо этого webpack жалуется, что у чего-то нет именованного экспорта Foo или Bar
использование этого, однако, работает:
const { Foo, Bar } = require('./something');
У меня также может быть import something from './something'; const { Foo, Bar } = something
, и это работает, но это не отвечает цели, если мне приходится реорганизовывать каждый существующий импорт.
Таким образом, вопрос на самом деле заключается в том, как работает import { Foo, Bar } from './something';
по сравнению с require()
- я бы подумал, что если экспорт по умолчанию - это объект, он выяснит это и деструктурирует, но нет радости
Есть ли простой способ сделать это «проксирование», не меняя способ потребления экспорта в другом месте?