Facebook 发布了新的 Node 模块管理器 Yarn,或取代 npm ? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Geeker
V2EX    Node.js

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

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

    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
    mogita
        1
    mogita  
       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
    run2
        9
    run2  
       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 : t/312455
    xcatliu
        57
    xcatliu  
       2016-10-13 11:52:55 +08:00
    @ETiV @DoraJDJ @kitalphaj @SourceMan @Troevil

    已发布 CYarn : t/312455
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     968 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 19:09 PVG 03:09 LAX 11:09 JFK 14:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86