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

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

  •  1
     
  •   Biwood · 300 天前 · 5931 次点击
    这是一个创建于 300 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    关于 deno,没有用过,不予置评~
    skiy
        12
    skiy  
       300 天前   ❤️ 3
    不要用 cnpm,而是直接 npm config set registry
    ayase252
        13
    ayase252  
       300 天前 via iPhone
    deno 是运行时,对标的是 node.js

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

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

    不如说国内除了 .net 系的,基本都要镜像源吧,谷歌系的就不说了,什么 Rust 、Jenkins 、Docker 这些都要
    catinsides
        30
    catinsides  
       300 天前   ❤️ 1
    私以为不会,另

    ```
    alias cnpm="npm --registry=https://registry.npm.taobao.org \
    --cache=$HOME/.npm/.cache/cnpm \
    --userconfig=$HOME/.cnpmrc"
    ```
    marcong95
        31
    marcong95  
       300 天前
    解决你的问题的最佳方案是 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  
       300 天前
    解决不了 npm 的问题,你也解决不了 deno 的问题。。
    love
        33
    love  
       300 天前
    @marcong95 npm 不适合用 proxy,还是用国内源快,因为 npm 的设计上有海量连接,代理质量再好也慢
    Terry05
        34
    Terry05  
       300 天前
    一看到 deno 的经典用法

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

    再结合我朝这么复杂的网络情况,不乐观
    sunjourney
        35
    sunjourney  
       300 天前
    @Kasumi20 yarn 都要被 pnpm 代替了,谈何 yarn 代替 npm
    HiCode
        36
    HiCode  
       300 天前
    关注 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  
       300 天前
    目前 deno 官方提供的二进制是不支持 centos 7 的,如果要在 centos 7 下使用,需要自行编译,可以参考下面链接在 centos 编译 deno,或直接下载二进制文件:

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