Bower больше не поддерживается, и рекомендуется перейти на npm.
Однако npm разработан для Node и имеет вложенную модель зависимостей, которая совершенно не подходит для Интернета.
Так (например), учитывая component-X
и component-Y
, что обоим нужно library-A
Бауэр загрузит что-то вроде:
/bower-components
/library-A
/component-X
/component-Y
Пока npm выдает:
/node_modules
/component-X
/node_modules
/library-A
/component-Y
/node_modules
/library-A
Поскольку это веб-приложение, множественные копии library-A
представляют собой серьезную проблему - нам нужно загрузить его ровно один раз.
Потенциально пряжа решает эту проблему с помощью yarn install --flat
, поскольку она выравнивает структуру и имеет механизм разрешения для различных версий.
Однако вложенные ссылки внутри компонентов не указывают на новое местоположение. Например, внутри component-X
будет строка типа:
import {moduleB} from 'library-A/module-B.js';
Теперь это невозможно, нужно указать на новое плоское местоположение:
import {moduleB} from '../library-A/module-B.js';
Кажется, что без этого изменения yarn install --flat
довольно бесполезно, поскольку вложенные зависимости всегда будут потеряны.
Как заставить Yarn обновлять эти разрешения при выравнивании?
Есть ли другой способ? Я понимаю, что пользовательская задача Gulp / Grunt / Webpack / Rollup может сделать это, но это похоже на обход чего-то, что предположительно устарел Бауэр из коробки.