mokeyjay
V2EX  ›  Node.js

npm 这种辣鸡玩意儿浑身都充满了各种不合理,为何这么多年还没被取代?

  •  
  •   mokeyjay · Apr 12, 2018 · 11039 views
    This topic created in 2953 days ago, the information mentioned may be changed or developed.

    甚至看不到 npm 官方有任何要改进的意思,例如抢包名的依旧在抢包名

    我不禁陷入了沉思

    是否意味着这届程序员不行(滑稽

    47 replies    2018-04-17 12:51:06 +08:00
    crysislinux
        1
    crysislinux  
       Apr 12, 2018 via Android
    说明没啥好办法啊
    muziki
        2
    muziki  
       Apr 12, 2018 via iPhone
    yarn 试试?
    mokeyjay
        3
    mokeyjay  
    OP
       Apr 12, 2018
    @crysislinux #1 解决方法有很多,但 npm 官方并不作为
    @muziki #2 yarn 看起来是个好东西,不过似乎比较少看到有人用 /提起
    bullettrain1433
        4
    bullettrain1433  
       Apr 12, 2018
    yarn 啊
    SakuraKuma
        5
    SakuraKuma  
       Apr 12, 2018
    所以产生了 yarn。
    然后 npm 又学起了 yarn。
    可惜已经太晚了,很多人跑去 yarn 了。
    fengyj
        6
    fengyj  
       Apr 12, 2018 via Android
    npm 占包名是没办法啦,但是没有像域名那样恶意,可是因为多了,有包名也没办法啊,就像你注册一个网站的昵称,被抢了也没办法啦。
    所以你会发现现在越来越多的包以 @.../命名了。哎,这也没办法啊。
    不过官方有时候确实不作为。
    mokeyjay
        7
    mokeyjay  
    OP
       Apr 12, 2018
    @huiyifyj #6 并不是没办法,这个很好解决啊,前面加用户名不就好了。例如 php 的 composer 就是 “ github 用户名 /repo 名” 来作为包名的,完美解决冲突
    fengyj
        8
    fengyj  
       Apr 12, 2018
    @mokeyjay #7 对啊,所以越来越多人以 @username/开头啊。
    我觉得包名应该允许转移也好一点。
    grewer
        9
    grewer  
       Apr 12, 2018
    除了抢包名,楼主详细说下其他不合理的地方啊,光是一味地说垃圾是没用的
    doubleflower
        10
    doubleflower  
       Apr 12, 2018
    光瞎 bb 了哪个不合理你列几个出来?
    mooo
        11
    mooo  
       Apr 12, 2018
    @mokeyjay 现在好的都用 @了,比如新的 babel 就是用 @组织 /XXX 作为包名的。 用 github 用户名的话 npm 不一定要发布的 github 上吧。
    Eoss
        12
    Eoss  
       Apr 12, 2018 via iPhone
    楼主具体列下哪些不合理呗。
    没用过其他包管理工具。列一下学习学习。
    superluckykoo
        13
    superluckykoo  
       Apr 12, 2018 via Android
    已转投 yarn,碰到过 npm 安装依赖包不全,或者新增依赖时删除了其他依赖包,主要是 rn 项目用 npm 出错概率比较大
    qfdk
        14
    qfdk  
    PRO
       Apr 12, 2018 via iPhone
    我感觉还好 目前为止没有碰到什么问题 这种还是靠谱的 别的就算了吧
    SirLostWhite
        15
    SirLostWhite  
       Apr 12, 2018
    第一次搞 npm 搞了一下午
    结果转 yarn 半小时搞定
    yarn 万岁!
    mwVYYA6
        16
    mwVYYA6  
       Apr 12, 2018
    @SirLostWhite 黑的漂亮
    murmur
        17
    murmur  
       Apr 12, 2018
    npm2 那个目录结构超级 sb
    但是 npm3 改成了扁平目录结构
    即便是在 windows 下也不太会出现问题了
    既然没问题干嘛要换
    wenbinwu
        18
    wenbinwu  
       Apr 12, 2018
    眼高手低,有意见提 issue 交 pr 去
    rashawn
        19
    rashawn  
       Apr 12, 2018 via iPhone
    @mokeyjay 已经可以加了
    dumbass
        20
    dumbass  
       Apr 12, 2018 via Android
    充满了 what-the-fuck-is-this-plugin 的模块 2333
    monsterxx03
        21
    monsterxx03  
       Apr 12, 2018 via iPhone
    随手看下 node_modules 里乱七八糟的依赖,发现好多 is-xxx, in-xxx 的模块,主体代码都不超过 5 行....这事从来没在其他语言里看过
    lzvezr
        22
    lzvezr  
       Apr 12, 2018 via Android
    @monsterxx03 left-pad 了解一下?
    lihongjie0209
        23
    lihongjie0209  
       Apr 12, 2018
    因为用 js 的程序员很少接触其他更好的包管理工具, 当没有对比的时候, npm 自然就是完美的
    FrankFang128
        24
    FrankFang128  
       Apr 12, 2018
    因为 JS 程序员觉得 NPM 是完美的~!
    crysislinux
        25
    crysislinux  
       Apr 12, 2018
    其他的包管理也不是没用过,也没比 npm 好到哪儿去。
    msg7086
        26
    msg7086  
       Apr 12, 2018
    Yarn 提起得少?去 Ruby 论坛看看吧,Yarn 都成 Rails 5.1 钦定 JS 包管理工具了。
    LeungJZ
        27
    LeungJZ  
       Apr 12, 2018
    yarn 路过。
    但是好像 `yarn add` 会重新安装一些包。
    反正我的项目就是,迫于无奈,只能改原包中的样式,但是每次 `yarn add` 后,样式又被恢复了。。。
    chinvo
        28
    chinvo  
       Apr 13, 2018 via iPhone
    npm 的 namespace 是付费功能来着
    viko16
        29
    viko16  
       Apr 13, 2018 via Android
    @monsterxx03 库作者用了什么依赖可不是 npm 的锅…
    aipansiyouyun
        30
    aipansiyouyun  
       Apr 13, 2018 via Android
    看成 mmp 了 ,😖
    catoncat
        31
    catoncat  
       Apr 13, 2018 via Android
    没看明白,说的缺点跟用 yarn 还是 npm 有啥关系
    qiumaoyuan
        32
    qiumaoyuan  
       Apr 13, 2018 via Android
    因为楼主还没开始着手写取代它的产品
    Pastsong
        33
    Pastsong  
       Apr 13, 2018
    @LeungJZ 原包的东西就是不能改,要么项目里覆盖,要么自己 fork,还有就是 postinstall 脚本,不然包管理就没有意义
    Pastsong
        34
    Pastsong  
       Apr 13, 2018
    @chinvo public 免费
    334132462
        35
    334132462  
       Apr 13, 2018
    因为是钦定的
    mritd
        36
    mritd  
       Apr 13, 2018 via iPhone
    说实话,每次弄 node 的 ci 我都怀疑这东西存在的合理性;目前始终不理解:

    为什么一个前端工具动不动就要装 gcc 编译 c++啥的玩意

    都是下载外部依赖 node module 目录为啥不能通用,为啥不能 cache (可能是我没找到)

    为毛线 node module 轻则百兆,动辄上 G

    下载编译过程为啥总要依赖系统工具,譬如 py2 (系统已经有了 py3)

    最不理解的一点就是撸了好几年后端代码,用 npm install 的时候我就没见过没有⚠的项目

    最蒙蔽的就是我发现这玩意好像都不锁版本号,so 不同时间点用同样的命令..... WTF
    julyclyde
        37
    julyclyde  
       Apr 13, 2018
    @mritd 正因为不锁版本号,所以才没法通用 node_modules 目录
    breeswish
        38
    breeswish  
       Apr 13, 2018
    楼主这不典型的喷吗?请先列举一下你觉得不好的地方。

    @mritd 系统有了 py3 还需要下个 py2 的原因心里还不清楚吗 :) 这两货又不通用。当然,blame node-gyp 没有升级到 py3。
    ly529
        39
    ly529  
       Apr 13, 2018
    进了帖子才发现 ve2x 可以这么酷炫
    doubleflower
        40
    doubleflower  
       Apr 13, 2018
    @lihongjie0209 什么叫当没有对比的时候 npm 是好的,我就没见过更好的
    lihongjie0209
        41
    lihongjie0209  
       Apr 13, 2018
    @doubleflower #40 见识少不是你的错, 但是你那拿出来炫耀就不对了
    Clarencep
        42
    Clarencep  
       Apr 13, 2018
    @mritd
    @julyclyde npm 5.x package-lock.json 可以了解下。


    @LeungJZ 没有哪个包管理会允许你直接修改包的内容的。你应该 fork 一份再自己改。然后 webpack 构建的时候指定 alias。
    Tankpt
        43
    Tankpt  
       Apr 13, 2018
    我猜是应该没找到更好的方案? 所以只能先将就了?
    Cryse
        44
    Cryse  
       Apr 13, 2018 via Android
    最恶心的明明是用来编译的 node-gyp
    LeungJZ
        45
    LeungJZ  
       Apr 14, 2018
    @Clarencep
    @Pastsong
    我知道,但是没办法,包本身没有 自定义的变量文件,只能手动覆盖。
    Miy4mori
        46
    Miy4mori  
       Apr 16, 2018
    很多啊,yarn,cnmp 还有几个其他的记不起名字。这东西要那么高要求干什么,能给我 install 就行了,,要求高可以去写 java,maven,gradle 之类的功能可全了。
    L3au
        47
    L3au  
       Apr 17, 2018 via iPhone
    看下来,node-gyp、不能全局共享 node_modules 很大程度上其实和 Node 设计有关,不是那么好兼容的同时做出大的改变的,包名、小模块、版本默认自动升级等更多是整个 JS 社区生态的现状,是和老牌的包管理工具是有区别,各有各的特点吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1061 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 260ms · UTC 22:42 · PVG 06:42 · LAX 15:42 · JFK 18:42
    ♥ Do have faith in what you're doing.