Как заменить Bower на Yarn --flat с вложенными зависимостями? - PullRequest
0 голосов
/ 25 июня 2018

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 может сделать это, но это похоже на обход чего-то, что предположительно устарел Бауэр из коробки.

...