如何使用带有嵌套依赖项的Yarn --flat替换Bower?

时间:2018-06-25 10:31:41

标签: javascript npm bower yarnpkg es6-modules

不再维护鲍尔,建议移至npm。

但是,npm是为Node设计的,并且具有一个完全不适合Web的嵌套依赖模型。

因此,(例如)在给定component-Xcomponent-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开箱即用的一种变通方法。

0 个答案:

没有答案