Facebook 发布了新的 Node 模块管理器 Yarn,或将成为 Nodejs 的 npm 替代品?

发布于 1周前 作者 songsunli 来自 nodejs/Nestjs

Facebook 发布了新的 Node 模块管理器 Yarn,或将成为 Nodejs 的 npm 替代品?

https://code.facebook.com/posts/1840075619545360

可能取代 npm ? 有几个特性:

  • 通过 lockfile 锁定了包的版本和 node_modules 文件夹的结构
  • 更快的安装
  • 兼容 npm 和 bower 的 workflow
  • 对已安装包的 licenses 进行约束
  • 给 build 工具暴露出更好用的 API
  • 更好读、好看的命令行输出

58 回复

May the force be with Front-End development…

FB 服务器都被墙了吧, 23333 ……这玩意儿在国内能流行起来?

Bootstrap 还是 twitter 的呢,不照样流行嘛,关键看是不是好用

于是猝不及防地来了一个 cYarn

对 npm 有意见很久了,明天看看

这个必然会火的

快如风,稳如狗。。 npm 💊

是这个么? https://github.com/yarnpkg/yarn
他们的 license 里都去掉 facebook 的名字 看样子是要独立发展啊
remove patents and facebook license headers
https://github.com/yarnpkg/yarn/commit/46e8be5a9b5e692ac9307a79342d0c1e03ffc3da

用的还是 npm 的源只是替换了 cli ,不过光是 lockfile 和全局缓存估计就足以让人抛弃 npm 了吧。

那篇 <在 2016 年学 JavaScript 是一种什么样的体验> 又可以加一段了…

npm 仓库是什么
是一个公开的仓库,用于放置可依赖的模块。不过现在已经是 2016 年了, 没有人用 NPM 了…现在大家都用 Yarn 了.
Yarn 又是什么?
是 Facebook 的 Node 模块管理器
好吧,我知道了,所以我应该用 Yarn 来安装依赖。
对的。我举个例子吧,如果你要使用 React ,你直接用 Yarn 安装 React ,然后在代码里导入 React 就可以了。大部分 JS 库都能这么安装。


May the force be with Front-End development…

yarn.中国 域名还没注册,同志们速度了

前端换得太快了吧?????

May the force be with Front-End development…

某宝 Yam 源赶赴前线中?

<br>Yarn wouldn't exist if it wasn't for excellent prior art. Yarn has been inspired by the following projects:<br><br>Bundler<br>Cargo<br>npm<br>
这 3 个货加上 yarn ,全都和 wycats 大神的痕迹,其实我是想来安利一波 cargo 和 rust 的

有大神能解释下这个意思吗? [通过 lockfile 锁定了包的版本和 node_modules 文件夹的结构]

参考 https://yarnpkg.com/en/docs/yarn-lock
就是说会生成个 yarn.lock 文件,这个文件应该放入版本管理中。它比 package.json 更具体,指定了版本号、包的 hash 等等,可以确保在别的地方安装时仍然下到同样的包,而不是别的版本。

可消停点吧,天呐。

为什么我下载了一个 yarn-0.15.0.msi win10 不让我装啊?说是未识别的应用。

我记得有更多信息,点一下然后就可以仍然安装,大概 msi 没签名? yarn 也可以通过 npm install --global 的方式安装,可以看 others 篇

说错不是 others 篇,是 Alternatives 篇

Yet Another Reliable NPM

拜一下 wycats 大神

怎么和 Hadoop YARN 重名呢

May the force be with Front-End development…

不知道有没有解决 npm 的重复依赖问题, npm 项目的安装包太碎片化了,一个项目需要依赖几百个包,还有大量的重复包,非常浪费空间

解决了一部分, yarn 出来的 node_modules 里不嵌套了

手速真快,期待

https://github.com/cyarnpkg/cyarn 为什么是自己重新 push 而不是 fork 过来的项目?


你忘了加上一段:

那我要怎么装 yarn 呢?

$> npm install -g yarn

静静的看你们被虐

本来是 fork 的,后来发现无法添加到个人主页上的 pinned repos 里面,就删除了改成了重新 push

npm3 也不嵌套吧?

官方给出的安装方法好像不是 npm install -g yarn

https://yarnpkg.com/en/docs/install



npm install -g yarnpkg

在 Altermatives 标签里

确实,我看漏了,多谢
https://yarnpkg.com/en/docs/install 在 Altermatives 标签里, npm install -g yarn

GitHub 的逻辑是除非你的发起 PR 合并回主干了,不然 fork 项目不能算成自己的贡献。或者如果你有充分的理由说明这个项目是独立项目,不需要合并回主干,那也可以联系 GitHub 官方支持让他们来做 detach 操作。

几乎什么都不改就把 fork 项目放到自己的个人主页宣传感觉不是很好的风气……

改短了呗, yarnpkg 上午就被 deprecated 啦

原来如此,等我先研究一下,看改动需不需要合并到主干。如果不需要合并的话,我会在醒目位置注明源仓库的,比如: https://github.com/xcatliu/jekyllcn

npm 有个大问题, 一个项目,有 N 个包,文件数量有几十万个,吓死人

注册了个 yarnjs.com 感觉学费米

不 fork 的我个人觉得真的不好

may god bless the front-end developer.


不是,他们最近刚刚改了会自动把你当前 OS 相关的 installation guide 放到最前面。 https://github.com/yarnpkg/website/commit/93d7df56fcc28bc3914eec1a79902d19e9b312db
在那之前你进去最先看到的其实是用 npm 安装的 guide 。

坐等 cyarn , npm 重复依赖的问题确实严重 ,每次 copy node_modules 目录 ,机器风扇就开始狂转

多谢提醒,本来是 fork 的,但是无法放到个人主页里面。我不希望将来有人贡献之后想放到他的个人主页里面也放不进去,所以重新 push 了一遍。

另外,它的开源协议是 BSD-2-Clause ,我认为这样子重新发布完全没有问题。况且我会标注源仓库的。

引用:

BSD 开源协议是一个给于使用者很大自由的协议。

基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但”为所欲为”的前提当你发布使用了 BSD 协议的代码,或者以 BSD 协议代码为基础做二次开发自己的产品时,需要满足三个条件:

1 、如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 BSD 协议。
2 、如果再发布的只是二进制类库 /软件,则需要在类库 /软件的文档和版权声明中包含原来代码中的 BSD 协议。
3 、不可以用开源代码的作者 /机构名字和原来产品的名字做市场推广。
BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。

BSD 由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。

而很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

我改成了 Forked 的了,移动到了我的 account 下,这样的话应该贡献者都可以放到个人主页里面的 pinned repos 了。感谢你们的建议。

另外已发布 CYarn : https://www.v2ex.com/t/312455

Yarn确实是由Facebook(以及Google、Exponent和Tilde)联合推出的一个新的JavaScript包管理器,旨在解决npm(Node Package Manager)存在的一些问题,并有可能成为其替代品。以下是对Yarn和npm的对比:

  1. 速度:Yarn通过并行下载和缓存机制提高了下载速度。相比之下,npm在安装大量依赖时可能会显得较慢。
# 使用Yarn安装依赖
yarn install

# 使用npm安装依赖
npm install
  1. 安全性:Yarn引入了yarn.lock文件,记录了每个依赖项的版本号和hash值,确保每次安装时获取相同的版本,避免了版本不一致导致的问题。npm则没有类似的机制。
  2. 可靠性:Yarn的缓存机制和确定性的安装算法保证了在不同机器和系统上安装结果的一致性。npm在安装依赖时可能会因为安装顺序的不同而导致node_modules目录结构的变化。
  3. 易用性:Yarn提供了交互式CLI界面,使得操作更加直观和简便。npm则需要更多的命令行参数来完成相同的操作。

综上所述,Yarn在速度、安全性、可靠性和易用性方面都有一定优势,因此有可能成为npm的替代品。不过,选择哪个包管理器取决于具体项目的需求和开发者的个人偏好。

回到顶部