Yarn 是 npm 的包装器吗?
Is Yarn a wrapper over npm?
我知道 Yarn 带来的好处以及它 npm
没有的好处。但是我确实有一些疑问:
- Yarn 是否在幕后使用
npm
用于其他一些保留与 npm
相同行为的命令?
- 如果不是,是否有理由在 yarn 中重新实现它们?这种方法有缺点吗?
不是,是重写
Rather than continue building infrastructure around the npm client, we
decided to try looking at the problem more holistically. What if
instead we attempted to build a new client that addressed the core
issues we were experiencing? Sebastian McKenzie in our London office
started hacking on this idea and we quickly became excited about its
potential.
-- https://code.facebook.com/posts/1840075619545360
它提供相同的 API(如果您注意到的话,没有一些快捷方式)。这是(我猜)因为原始界面足够简单并确保采用。
速度更快,解决了 npm 的典型问题(主要是不确定性部署)。这只能通过自上而下的重写来实现,他们还更改了 deps 的安装方式(获取、计算、下载,link),因此逻辑不同。
这种方法的缺点是需要大量的工作。通常你只会在主仓库上进行公关,但考虑到他们想要一个完全不同的东西并且 Facebook 有办法,他们决定单独行动。
另一个很大的缺点是它的好处不会立即对所有 npm 老用户可用,因为它不是升级,也没有随 node 一起安装。
我查看了 Yarn 的源代码,发现每个命令都有自定义代码:https://github.com/yarnpkg/yarn/tree/master/src/cli/commands.
我想这种方法的缺点是,将来 npm
添加新命令时,Yarn 团队将不得不跟踪更改并手动实施它们。
我知道 Yarn 带来的好处以及它 npm
没有的好处。但是我确实有一些疑问:
- Yarn 是否在幕后使用
npm
用于其他一些保留与npm
相同行为的命令? - 如果不是,是否有理由在 yarn 中重新实现它们?这种方法有缺点吗?
不是,是重写
Rather than continue building infrastructure around the npm client, we decided to try looking at the problem more holistically. What if instead we attempted to build a new client that addressed the core issues we were experiencing? Sebastian McKenzie in our London office started hacking on this idea and we quickly became excited about its potential.
-- https://code.facebook.com/posts/1840075619545360
它提供相同的 API(如果您注意到的话,没有一些快捷方式)。这是(我猜)因为原始界面足够简单并确保采用。
速度更快,解决了 npm 的典型问题(主要是不确定性部署)。这只能通过自上而下的重写来实现,他们还更改了 deps 的安装方式(获取、计算、下载,link),因此逻辑不同。
这种方法的缺点是需要大量的工作。通常你只会在主仓库上进行公关,但考虑到他们想要一个完全不同的东西并且 Facebook 有办法,他们决定单独行动。
另一个很大的缺点是它的好处不会立即对所有 npm 老用户可用,因为它不是升级,也没有随 node 一起安装。
我查看了 Yarn 的源代码,发现每个命令都有自定义代码:https://github.com/yarnpkg/yarn/tree/master/src/cli/commands.
我想这种方法的缺点是,将来 npm
添加新命令时,Yarn 团队将不得不跟踪更改并手动实施它们。