不再维护鲍尔,建议移至npm。
但是,npm是为Node设计的,并且具有一个完全不适合Web的嵌套依赖模型。
因此,(例如)在给定component-X
和component-Y
的情况下,都需要library-A
的Bower会下载如下内容:
/bower-components
/library-A
/component-X
/component-Y
npm产生:
/node_modules
/component-X
/node_modules
/library-A
/component-Y
/node_modules
/library-A
由于这是一个Web应用程序,library-A
的多个副本是一个重大问题-我们需要将其准确地加载一次。
潜在的Yarn使用yarn install --flat
解决了这个问题,因为它使结构变平并为不同的版本提供了resolution mechanism。
但是,组件内部的嵌套引用不会指向新位置。例如,在component-X
内将有一行:
import {moduleB} from 'library-A/module-B.js';
现在这失败了,它需要指向新的 flattened 位置:
import {moduleB} from '../library-A/module-B.js';
yarn install --flat
似乎没有任何用处,因为嵌套的依赖项将始终丢失。
我如何使Yarn在变平时更新这些分辨率?
还有另一种方法吗?我意识到可以通过一个自定义的Gulp / Grunt / Webpack / Rollup任务来做到这一点,但这似乎是Bower开箱即用的一种变通方法。