V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Geeker
V2EX  ›  Node.js

Facebook 发布了新的 Node 模块管理器 Yarn,或取代 npm ?

  •  5
     
  •   Geeker · 2016-10-11 23:53:00 +08:00 · 6890 次点击
    这是一个创建于 2725 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    • 通过 lockfile 锁定了包的版本和 node_modules 文件夹的结构
    • 更快的安装
    • 兼容 npm 和 bower 的 workflow
    • 对已安装包的 licenses 进行约束
    • 给 build 工具暴露出更好用的 API
    • 更好读、好看的命令行输出
    57 条回复    2016-10-13 11:52:55 +08:00
    ck65
        1
    ck65  
       2016-10-12 00:01:53 +08:00   ❤️ 2
    God bless 2016
    Geeker
        2
    Geeker  
    OP
       2016-10-12 00:15:04 +08:00   ❤️ 5
    @ck65 May the force be with Front-End development..
    ETiV
        3
    ETiV  
       2016-10-12 00:16:28 +08:00
    FB 服务器都被墙了吧, 23333 ……这玩意儿在国内能流行起来?
    atan
        4
    atan  
       2016-10-12 00:24:59 +08:00
    Bootstrap 还是 twitter 的呢,不照样流行嘛,关键看是不是好用
    DoraJDJ
        5
    DoraJDJ  
       2016-10-12 00:25:02 +08:00 via Android
    @ETiV 于是猝不及防地来了一个 cYarn
    kfll
        6
    kfll  
       2016-10-12 00:31:50 +08:00 via iPhone
    对 npm 有意见很久了,明天看看
    xwartz
        7
    xwartz  
       2016-10-12 00:37:36 +08:00
    这个必然会火的
    Geeker
        8
    Geeker  
    OP
       2016-10-12 00:40:44 +08:00
    快如风,稳如狗。。 npm 💊
    sobigfish
        9
    sobigfish  
       2016-10-12 00:44:50 +08:00
    是这个么? https://github.com/yarnpkg/yarn
    他们的 license 里都去掉 facebook 的名字 看样子是要独立发展啊
    remove patents and facebook license headers
    https://github.com/yarnpkg/yarn/commit/46e8be5a9b5e692ac9307a79342d0c1e03ffc3da
    ZhaoMiing
        10
    ZhaoMiing  
       2016-10-12 00:50:31 +08:00
    用的还是 npm 的源只是替换了 cli ,不过光是 lockfile 和全局缓存估计就足以让人抛弃 npm 了吧。
    cbais7890
        11
    cbais7890  
       2016-10-12 01:46:18 +08:00   ❤️ 7
    那篇 <在 2016 年学 JavaScript 是一种什么样的体验> 又可以加一段了...

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

    ..................
    May the force be with Front-End development..
    kitalphaj
        12
    kitalphaj  
       2016-10-12 07:04:06 +08:00
    yarn.中国 域名还没注册,同志们速度了
    okampfer
        13
    okampfer  
       2016-10-12 09:03:39 +08:00
    前端换得太快了吧?????
    scnace
        14
    scnace  
       2016-10-12 09:42:16 +08:00
    May the force be with Front-End development..
    cismous
        15
    cismous  
       2016-10-12 09:54:43 +08:00
    https://github.com/yarnpkg/yarn/issues/513
    这个 issue 没解决,暂时还用不了
    SourceMan
        16
    SourceMan  
       2016-10-12 10:00:46 +08:00
    坐等 cYarn
    Geeker
        17
    Geeker  
    OP
       2016-10-12 10:28:55 +08:00
    btjoker
        18
    btjoker  
       2016-10-12 10:54:18 +08:00
    某宝 Yam 源赶赴前线中?
    zhqy
        19
    zhqy  
       2016-10-12 11:05:18 +08:00
    try cnpm
    fanyer
        20
    fanyer  
       2016-10-12 11:17:06 +08:00
    ```
    Yarn wouldn't exist if it wasn't for excellent prior art. Yarn has been inspired by the following projects:

    Bundler
    Cargo
    npm
    ```
    这 3 个货加上 yarn ,全都和 wycats 大神的痕迹,其实我是想来安利一波 cargo 和 rust 的
    qweweretrt515
        21
    qweweretrt515  
       2016-10-12 11:21:41 +08:00
    有大神能解释下这个意思吗? [通过 lockfile 锁定了包的版本和 node_modules 文件夹的结构]
    fds
        22
    fds  
       2016-10-12 11:29:55 +08:00   ❤️ 1
    @qweweretrt515 参考 https://yarnpkg.com/en/docs/yarn-lock
    就是说会生成个 yarn.lock 文件,这个文件应该放入版本管理中。它比 package.json 更具体,指定了版本号、包的 hash 等等,可以确保在别的地方安装时仍然下到同样的包,而不是别的版本。
    imswing
        23
    imswing  
       2016-10-12 11:32:43 +08:00
    可消停点吧,天呐。
    lei40251
        24
    lei40251  
       2016-10-12 11:42:12 +08:00
    为什么我下载了一个 yarn-0.15.0.msi win10 不让我装啊?说是未识别的应用。
    xingo
        25
    xingo  
       2016-10-12 11:48:58 +08:00
    @lei40251 我记得有更多信息,点一下然后就可以仍然安装,大概 msi 没签名? yarn 也可以通过 npm install --global 的方式安装,可以看 others 篇
    xingo
        26
    xingo  
       2016-10-12 11:49:59 +08:00
    说错不是 others 篇,是 Alternatives 篇
    Sasasu
        27
    Sasasu  
       2016-10-12 11:56:42 +08:00 via Android
    Yet Another Reliable NPM
    cheetah
        28
    cheetah  
       2016-10-12 12:27:25 +08:00
    拜一下 wycats 大神
    xcatliu
        29
    xcatliu  
       2016-10-12 12:33:09 +08:00
    joyeu
        30
    joyeu  
       2016-10-12 12:38:28 +08:00
    怎么和 Hadoop YARN 重名呢
    xi_lin
        31
    xi_lin  
       2016-10-12 12:49:15 +08:00
    May the force be with Front-End development..
    Biwood
        32
    Biwood  
       2016-10-12 12:57:13 +08:00
    不知道有没有解决 npm 的重复依赖问题, npm 项目的安装包太碎片化了,一个项目需要依赖几百个包,还有大量的重复包,非常浪费空间
    fds
        33
    fds  
       2016-10-12 13:27:56 +08:00
    @Biwood 解决了一部分, yarn 出来的 node_modules 里不嵌套了
    Geeker
        34
    Geeker  
    OP
       2016-10-12 15:01:07 +08:00
    @xcatliu 手速真快,期待
    sodatea
        35
    sodatea  
       2016-10-12 15:17:46 +08:00
    @xcatliu https://github.com/cyarnpkg/cyarn 为什么是自己重新 push 而不是 fork 过来的项目?
    evanmeng
        36
    evanmeng  
       2016-10-12 15:19:24 +08:00   ❤️ 1
    @cbais7890
    你忘了加上一段:

    那我要怎么装 yarn 呢?

    $> npm install -g yarn
    crystone
        37
    crystone  
       2016-10-12 15:24:39 +08:00
    静静的看你们被虐
    xcatliu
        38
    xcatliu  
       2016-10-12 15:45:59 +08:00
    @sodatea 本来是 fork 的,后来发现无法添加到个人主页上的 pinned repos 里面,就删除了改成了重新 push
    nullizer
        39
    nullizer  
       2016-10-12 16:00:52 +08:00
    @fds npm3 也不嵌套吧?
    xcatliu
        40
    xcatliu  
       2016-10-12 16:34:52 +08:00
    @evanmeng 官方给出的安装方法好像不是 npm install -g yarn

    https://yarnpkg.com/en/docs/install
    xwartz
        41
    xwartz  
       2016-10-12 16:49:21 +08:00
    @evanmeng

    npm install -g yarnpkg
    ynyounuo
        42
    ynyounuo  
       2016-10-12 17:04:39 +08:00 via iPhone   ❤️ 1
    @xcatliu 在 Altermatives 标签里
    xcatliu
        43
    xcatliu  
       2016-10-12 17:08:39 +08:00
    @ynyounuo 确实,我看漏了,多谢
    @xwartz https://yarnpkg.com/en/docs/install 在 Altermatives 标签里, npm install -g yarn
    xwartz
        44
    xwartz  
       2016-10-12 17:14:37 +08:00
    sodatea
        45
    sodatea  
       2016-10-12 17:28:47 +08:00   ❤️ 1
    @xcatliu GitHub 的逻辑是除非你的发起 PR 合并回主干了,不然 fork 项目不能算成自己的贡献。或者如果你有充分的理由说明这个项目是独立项目,不需要合并回主干,那也可以联系 GitHub 官方支持让他们来做 detach 操作。

    几乎什么都不改就把 fork 项目放到自己的个人主页宣传感觉不是很好的风气……
    fds
        46
    fds  
       2016-10-12 18:07:47 +08:00
    @xwartz 改短了呗, yarnpkg 上午就被 deprecated 啦
    xcatliu
        47
    xcatliu  
       2016-10-12 19:26:48 +08:00
    @sodatea 原来如此,等我先研究一下,看改动需不需要合并到主干。如果不需要合并的话,我会在醒目位置注明源仓库的,比如: https://github.com/xcatliu/jekyllcn
    qweweretrt515
        48
    qweweretrt515  
       2016-10-12 19:34:49 +08:00
    npm 有个大问题, 一个项目,有 N 个包,文件数量有几十万个,吓死人
    youxiachai
        49
    youxiachai  
       2016-10-12 19:41:24 +08:00
    @Biwood 没用 npm3?
    crs0910
        50
    crs0910  
       2016-10-12 23:20:47 +08:00
    注册了个 yarnjs.com 感觉学费米
    Geeker
        51
    Geeker  
    OP
       2016-10-13 00:52:15 +08:00   ❤️ 1
    @xcatliu 不 fork 的我个人觉得真的不好
    jukka
        52
    jukka  
       2016-10-13 01:25:56 +08:00
    may god bless the front-end developer.
    evanmeng
        53
    evanmeng  
       2016-10-13 06:49:55 +08:00
    @xcatliu
    不是,他们最近刚刚改了会自动把你当前 OS 相关的 installation guide 放到最前面。 https://github.com/yarnpkg/website/commit/93d7df56fcc28bc3914eec1a79902d19e9b312db
    在那之前你进去最先看到的其实是用 npm 安装的 guide 。
    Troevil
        54
    Troevil  
       2016-10-13 09:00:56 +08:00
    坐等 cyarn , npm 重复依赖的问题确实严重 ,每次 copy node_modules 目录 ,机器风扇就开始狂转
    xcatliu
        55
    xcatliu  
       2016-10-13 09:55:44 +08:00
    @Geeker 多谢提醒,本来是 fork 的,但是无法放到个人主页里面。我不希望将来有人贡献之后想放到他的个人主页里面也放不进去,所以重新 push 了一遍。

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

    引用:

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

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

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

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

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

    而很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
    xcatliu
        56
    xcatliu  
       2016-10-13 11:51:36 +08:00
    @sodatea @Geeker 我改成了 Forked 的了,移动到了我的 account 下,这样的话应该贡献者都可以放到个人主页里面的 pinned repos 了。感谢你们的建议。

    另外已发布 CYarn : https://www.v2ex.com/t/312455
    xcatliu
        57
    xcatliu  
       2016-10-13 11:52:55 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3910 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 00:56 · PVG 08:56 · LAX 17:56 · JFK 20:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.