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

在可见的未来, Deno 替代 npm 的可能性大吗?

  •  1
     
  •   Biwood · 2021-03-23 11:06:14 +08:00 · 7533 次点击
    这是一个创建于 1345 天前的主题,其中的信息可能已经有所发展或是发生改变。

    频繁处理 npm install 的报错问题实在太让人恼火了。一是网络慢的问题,换了 cnpm,结果又遇到一堆新问题。二是依赖系统太烂了,某一个小小的模块出问题会导致整个项目无法正常运行。

    Deno 看起来很不错,查了一下,貌似好多常用工具还不能直接使用,到底什么时候才真正替代 npm 这个东西呢?

    47 条回复    2021-03-24 14:13:04 +08:00
    ericls
        1
    ericls  
       2021-03-23 11:07:43 +08:00 via iPhone
    Deno 代替的是 node.
    xiri
        2
    xiri  
       2021-03-23 11:07:47 +08:00
    deno 要代替的不是 nodejs 吗? npm 只是一个 nodejs 的工具而已
    murmur
        3
    murmur  
       2021-03-23 11:10:18 +08:00   ❤️ 1
    不要换 cnpm,直接配置挂阿里的镜像,cnpm 和 npm+registry 好像还略有区别
    Kasumi20
        4
    Kasumi20  
       2021-03-23 11:10:25 +08:00
    yarn 替代 npm 还差不多
    Rocketer
        5
    Rocketer  
       2021-03-23 11:11:11 +08:00 via iPhone
    暂时还不可见,流行的东西往往不是因为优秀,而是因为生态完善。

    而且网络问题是中国特色,所以只能指望中国人自己解决。但你也知道,中国的开源氛围很呵呵。
    Hardrain
        6
    Hardrain  
       2021-03-23 11:13:16 +08:00
    npm install 的不稳定是中国特色.
    JDog
        7
    JDog  
       2021-03-23 11:17:46 +08:00
    也不知道是我们前端开发烂还是 npm 烂,build 居然会 OOM
    wellsc
        8
    wellsc  
       2021-03-23 11:20:24 +08:00
    不明所以
    rodrick
        9
    rodrick  
       2021-03-23 11:20:47 +08:00
    所以说没有梯子搞开发真的困难
    hyrious
        10
    hyrious  
       2021-03-23 11:21:40 +08:00
    Deno 是后端工具,npm 是前端包管理器,不好比较
    Deno 如果能全面取代 NodeJS 处理后端的事务,NodeJS 还可以继续做前端的活
    @Kasumi20 yarn1 目前不如 npm
    wxsm
        11
    wxsm  
       2021-03-23 11:22:24 +08:00
    不建议用 cnpm,安装的文件结构不一样,并且经常会遇到莫名其妙的问题。关于网络慢的问题,可以尝试使用 nrm 切换至国内源即可。

    关于 deno,没有用过,不予置评~
    skiy
        12
    skiy  
       2021-03-23 11:28:13 +08:00   ❤️ 3
    不要用 cnpm,而是直接 npm config set registry
    ayase252
        13
    ayase252  
       2021-03-23 11:32:04 +08:00 via iPhone
    deno 是运行时,对标的是 node.js

    deno 那套 url 直接引入,网络环境不好照样挂
    zhuangzhuang1988
        14
    zhuangzhuang1988  
       2021-03-23 11:32:56 +08:00
    好久没看到消息, 以为已经死了呢.
    onec
        15
    onec  
       2021-03-23 11:34:48 +08:00
    包管理试试 pnpm,很好用
    TimePPT
        16
    TimePPT  
       2021-03-23 11:44:12 +08:00 via Android
    用了一阵 yarn,感觉好使
    Phariel
        17
    Phariel  
       2021-03-23 11:46:10 +08:00 via iPhone
    Deno 不太会替代 Node.js 生态埋下去了 重构火葬场🐶
    anjianshi
        18
    anjianshi  
       2021-03-23 11:46:51 +08:00
    @hyrious yarn 具体有哪里不如 npm 吗,我感觉装包比 npm 快啊
    optional
        19
    optional  
       2021-03-23 11:48:17 +08:00 via Android
    npm 只要设置几个 binary 的 mirror 非常稳,其它的都是邪路
    learningman
        20
    learningman  
       2021-03-23 11:49:15 +08:00 via Android
    deno 那套 url 引入,镜像都不好搞,更完蛋
    yyfearth
        21
    yyfearth  
       2021-03-23 12:07:08 +08:00
    @hyrious npm 不是前端包管理器 是 node 的包管理器
    只不过很多前端的包借用了 node 的 npm
    反正 webpack 或者其他打包工具很多都需要用 npm 来管理安装
    yyfearth
        22
    yyfearth  
       2021-03-23 12:10:14 +08:00
    deno 相当于内建了 npm 的 node
    不过他学习 go 可以像浏览器一样直接引用远端的包 然后缓存在本地
    这样其实有也是有利有弊的
    好处是不需要一个包管理器了
    坏处也是没有一个包管理器 导致镜像缓存或者 override 不好作了

    就连 go 也在推进包管理器了
    vevlins
        23
    vevlins  
       2021-03-23 12:16:42 +08:00
    deno 的包管理跟 gomod 差不多,没感觉有什么好用的。
    yl20181003
        24
    yl20181003  
       2021-03-23 12:22:39 +08:00 via Android
    给 npm 挂代理 配阿里镜像有时候会有莫名其妙的问题
    superrichman
        25
    superrichman  
       2021-03-23 12:33:52 +08:00 via iPhone
    npm 国内源也遇到过问题,主要是国内源没及时更新。
    还是挂梯子用原版 npm 最靠谱
    Chenamy2017
        26
    Chenamy2017  
       2021-03-23 12:54:57 +08:00
    最害怕 npm install 了,哎,没有梯子真是糟心
    SystemLight
        27
    SystemLight  
       2021-03-23 13:19:25 +08:00
    @Chenamy2017 配下阿里源不香么
    otakustay
        28
    otakustay  
       2021-03-23 13:28:11 +08:00
    @JDog OOM 是因为 node 默认最多使用 1.7G 左右内存,超了就会爆。这个值其实用在 server 上还是很正常的,但用在 build 上,对应 java 、.net 、swift 这类也很有可能要 OOM
    h82258652
        29
    h82258652  
       2021-03-23 13:35:05 +08:00
    npm config set registry 搭配 yarn +1
    用阿里源

    不如说国内除了 .net 系的,基本都要镜像源吧,谷歌系的就不说了,什么 Rust 、Jenkins 、Docker 这些都要
    catinsides
        30
    catinsides  
       2021-03-23 13:50:29 +08:00   ❤️ 1
    私以为不会,另

    ```
    alias cnpm="npm --registry=https://registry.npm.taobao.org \
    --cache=$HOME/.npm/.cache/cnpm \
    --userconfig=$HOME/.cnpmrc"
    ```
    marcong95
        31
    marcong95  
       2021-03-23 14:09:16 +08:00
    解决你的问题的最佳方案是 npm config set http_proxy <懂的都懂>

    就算用 deno 替代,对于 deno 未来的各种 import { xx } from "https://github.com/aa/bb/cc.ts"
    你还是需要 HTTP_PROXY=<懂的都懂> deno run xx.ts
    yuankui
        32
    yuankui  
       2021-03-23 14:20:29 +08:00
    解决不了 npm 的问题,你也解决不了 deno 的问题。。
    love
        33
    love  
       2021-03-23 14:21:58 +08:00
    @marcong95 npm 不适合用 proxy,还是用国内源快,因为 npm 的设计上有海量连接,代理质量再好也慢
    Terry05
        34
    Terry05  
       2021-03-23 14:23:58 +08:00
    一看到 deno 的经典用法

    import some_thing from 'https://some-site.com/abc'

    再结合我朝这么复杂的网络情况,不乐观
    sunjourney
        35
    sunjourney  
       2021-03-23 14:26:58 +08:00
    @Kasumi20 yarn 都要被 pnpm 代替了,谈何 yarn 代替 npm
    HiCode
        36
    HiCode  
       2021-03-23 15:14:04 +08:00
    关注 deno 近一年,目前已经写好基础 web 框架,但还未将实际业务转移过来。

    最开始遇到的就是网络问题,之前用网友提供镜像服务,后来他停止服务了,只能本机开 v2,然后要求 deno 通过本地代理去请求。发布到线上的时候,先 bundle 。

    不想用 node,主要就是 npm 太“重”,拉一个小项目,删除的时候发现几万个文件需要删,硬盘表示很酸爽。

    deno 目前大部分的扩展,都是基于 ts 去开发的,例如第三方的 mysql 和 redis 的驱动等等,我更希望官方能提供基于 rust 开发的扩展,像 php 那样。不然各个扩展基于不同版本的 std 库,最终打包出来的文件非常大,里面包含大量重复的不同版本的代码。

    1.8.1 版本时,遇到 deno 在 windows ltsc 上会崩溃(1.8.2 又莫名其妙好了),就花点时间体验其他 js 运行时。

    挺喜欢 fibjs 的,奈何贡献人数少,在实际体验时撞到不少 bug (例如 sandbox 的 freeze 无法调用、fs 的 watch 方法在检测目录时,无法提供准确的文件名……)。

    还有 txiki.js ,不过这个还有待完善( win 和 linux 下都编译失败),按 quickjs 提供的接口,可以很方便通过 c 或其他语言生成.so/.dll 扩展,后续会继续关注 txiki.js 。

    nginx njs 只大概看了一下,没有深入……

    就目前来说,对比 node.js ,deno 可能是更好的选择……
    HiCode
        37
    HiCode  
       2021-03-23 15:24:03 +08:00
    目前 deno 官方提供的二进制是不支持 centos 7 的,如果要在 centos 7 下使用,需要自行编译,可以参考下面链接在 centos 编译 deno,或直接下载二进制文件:

    https://gitee.com/haimadongli001/deno-binary-for-centos7
    d7sus4
        38
    d7sus4  
       2021-03-23 15:37:54 +08:00
    你这个根本不是 npm or deno 的问题,deno URL 引入同样会有你懂的问题。
    另:在我看来 deno 不可能取代 nodejs,一是 nodejs 本身并没有什么硬伤迫使这个最大、最活跃的生态往 deno 转移,二是 deno 所带来的安全、ts 、单一可执行文件、内置的标准库和工具之类对于开发者来说也没有很强的吸引力。
    xcstream
        39
    xcstream  
       2021-03-23 16:10:15 +08:00
    10 年内 0.1%
    duyongbo520
        40
    duyongbo520  
       2021-03-23 16:56:34 +08:00
    不要再换了,学不动了。🐶
    falcon05
        41
    falcon05  
       2021-03-23 17:01:05 +08:00 via iPhone
    npm 国内源很坑,跟官方不是完全同步的,搞出了很多不必要的报错,我说的就是阿里那个。
    hongch
        42
    hongch  
       2021-03-23 18:21:00 +08:00
    @JDog 可能是机子烂 升内存吧
    zhuweiyou
        43
    zhuweiyou  
       2021-03-24 00:49:38 +08:00
    deno 对标的是 node,并不是 npm.
    另外 deno 再过 10 年也代替不了 node.
    myCupOfTea
        44
    myCupOfTea  
       2021-03-24 08:55:05 +08:00
    @JDog oom 也不是 npm 的问题,npm 只是帮你执行了一下命令,实际上处理的是 webpack,node 默认限制了内存大小,oom 调大点 node 内存就好了,要不就换打包工具(oom 完全是打包工具,依赖库太多,代码过大等等导致的)
    xutao881
        45
    xutao881  
       2021-03-24 10:50:15 +08:00
    ????这俩没啥关系啊
    biguokang
        46
    biguokang  
       2021-03-24 14:06:52 +08:00
    @murmur 配了阿里的镜像源,如果你有发 npm 包的需求,那么你需要切回来原来的官方源才可以发,使用 cnpm 可以和 npm 独立开来,相互不影响。不过看了下绝大多数人也不会有发 npm 包的需求,所以都无所谓。。。。不过我一般建议做法电脑开代理,然后配置下 npm proxy 让 npm 下载走代理
    biguokang
        47
    biguokang  
       2021-03-24 14:13:04 +08:00
    @yyfearth 所以 deno 也相当于有个“官方”的库( https://deno.land/x/abcdefg ),你喜欢可以发在上面,也相当于中心化了。。。或者放 github 上和大型 cdn 上。。。你也可以用在项目里用 deps.ts 来批量管理包的源网址,假如哪个包的地址连不了,可以在上面全局替换
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1295 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 17:54 · PVG 01:54 · LAX 09:54 · JFK 12:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.