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

2021-03-23 11:06:14 +08:00
 Biwood

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

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

7271 次点击
所在节点    Node.js
47 条回复
yyfearth
2021-03-23 12:07:08 +08:00
@hyrious npm 不是前端包管理器 是 node 的包管理器
只不过很多前端的包借用了 node 的 npm
反正 webpack 或者其他打包工具很多都需要用 npm 来管理安装
yyfearth
2021-03-23 12:10:14 +08:00
deno 相当于内建了 npm 的 node
不过他学习 go 可以像浏览器一样直接引用远端的包 然后缓存在本地
这样其实有也是有利有弊的
好处是不需要一个包管理器了
坏处也是没有一个包管理器 导致镜像缓存或者 override 不好作了

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

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

```
alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--userconfig=$HOME/.cnpmrc"
```
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
2021-03-23 14:20:29 +08:00
解决不了 npm 的问题,你也解决不了 deno 的问题。。
love
2021-03-23 14:21:58 +08:00
@marcong95 npm 不适合用 proxy,还是用国内源快,因为 npm 的设计上有海量连接,代理质量再好也慢
Terry05
2021-03-23 14:23:58 +08:00
一看到 deno 的经典用法

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

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

https://gitee.com/haimadongli001/deno-binary-for-centos7
d7sus4
2021-03-23 15:37:54 +08:00
你这个根本不是 npm or deno 的问题,deno URL 引入同样会有你懂的问题。
另:在我看来 deno 不可能取代 nodejs,一是 nodejs 本身并没有什么硬伤迫使这个最大、最活跃的生态往 deno 转移,二是 deno 所带来的安全、ts 、单一可执行文件、内置的标准库和工具之类对于开发者来说也没有很强的吸引力。
xcstream
2021-03-23 16:10:15 +08:00
10 年内 0.1%
duyongbo520
2021-03-23 16:56:34 +08:00
不要再换了,学不动了。🐶

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/764184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX