Nodejs 用户为什么这么爱变来变去呢?

这似乎是前端开发人员的通病,喜欢变来变去,想一出是一出,完全不考虑连贯性。 cloudflare worker 创建项目一开始用的是 wrangler init, 后来改成了 wrangler create 了。改这么一个字也许对他来说符合它最新审美了,但是用户又要跟着他去记一个新的命令了。操!


Nodejs 用户为什么这么爱变来变去呢?
74 回复

是的,感觉将来还会继续变来变去。。。。


前端项目过了半年不动,打包就容易出错,因为很多包小版本更新都经常不兼容😅

这就是我们前端特有的 ship fast ,你们有这样的技术吗

过几天改成 wrangler add

再过几天改成 wrangler new

这种真想不通,这种单词有啥好改的想不通。

让我想起了 antfu/ni ,希望多一些这种工具

| 作用 | npm | yarn | pnpm |
| --------- | ----------------------- | -------------------- | -------------------- |
| 安装 | npm install | yarn install | pnpm install |
| 安装的简写 | npm i | yarn add | pnpm add |
| 强制安装 | | | pnpm install --force |
| 卸载 | npm unintall | yarn remove | pnpm remove |
| 卸载简写 | npm rm | yarn rm | pnpm rm |
| 全局安装 | npm i xxx --global/-g | yarn global add xxx | pnpm add -g xxx |
| 安装包(生产模式) | npm i xxx --save/-S | yarn add xxx | pnpm add xxx |
| 开发模式安装包 | npm i xxx --save-dev/-D | yarn add xxx -dev/-D | pnpm add -D xxx |
| 检查更新 | npm outdated | | |
| 更新 | npm update | yarn upgrade | pnpm update |
| 全局更新 | npm update -g | yarn global upgrade | pnpm update -g |
| 运行 | npm run xxx | yarn run | pnpm run xxx |
| 清除缓存 | npm cache clean | yarn cache clean | |
| 动态包执行 | npx xxx | yarn dlx xxx | pnpm dlx xxx |
| 查看全局安装的包 | npm list -g --depth 0 | yarn global list | pnpm list -g |

php 就没有这种问题,5.4 还能跑

纯个人想法哈, 变来变去才有些活力, 一潭死水反而没什么意思了. 当然这个现象高情商叫百花齐放, 低情商称为群魔乱舞.哈哈哈

我在官方文档中并没有看到你说的 wrangler create 一直都是 wrangler init

https://developers.cloudflare.com/workers/wrangler/commands/

同时我使用 wrangler create 后提示 ERROR Unknown argument: create



同时我查看了旧版本 https://github.com/cloudflare/wrangler-legacy 也是 wrangler init

好奇你说的 wrangler create 是从哪里来的?

文档和源码里都是 init ,也没有找到 init 变 create 的 issue 或者 pr ,是 ChatGPT 说的 create 吗?

又不是政企项目,人家才不考虑 backward compatibility 呢

#12 有意思,lz 疑似虚空打靶,楼下为了嘲讽不加验证就跟着嘲讽。

虽然楼主可能是虚空打靶,但我认为 js 的兼容性已经强到不可思议了,所以 js 用户更加的肆无忌惮。
总结:利好 ts

问题不大吧,反正 op 搞个几年,也转行了。。

没用过这个工具。
很多时候建一个新命令是为了不破坏旧命令的兼容性。新命令新行为,旧命令旧行为。
真背锅我看也轮不到前端。你要不然看看 git 有多少命令?

搭车问一下, 这个 wrangler 是什么神奇的单词? SageMaker, nodejs, Cloudflare Workers, 八杆子打不着的三个玩意儿, 都跟它扯得上五毛关系. 谁来科普一下它们之间的内在美?

lz 记混了吧,创建项目:npm create cloudflare@latest xxx
创建某个 cf 产品的新实例:npx wrangler xxx create xxx
以上这两个才有 create

新建的命令我不知道改没改,但是 wrangler publish 确实改 wrangler deploy 了

版本不对锁版本呗

前端项目,过了一个星期,我都不知道能不能编译过。。。。。

固定 node 版本、固定包版本,有啥编译不过的?

OP 怎么还没回复 12 楼的呢? 我瓜子都买好啦

刚好我最近也使用了 wrangler ,这次大改动官方做了比较完善的 TS 支持,已经很不错了,总比不管用户死活好多了 😂

瞎几把变容易出一身冷汗的[doge]

再过几天改成 wrangler build

哈哈哈哈哈哈 nodejs 他们还会把 happy eyeball 弄坏了不修 感兴趣可以读这个 https://dmesg.app/nodejs-dual-stack.html

这都能扯得上 nodejs 用户……

假设真的有改动,这个命令根本不高频使用吧,都是用到的时候看文档就行了,根本不需要记。难道楼主是天天新建 cf worker 项目

另外命令叫什么不是维护者自己愿意自己改的吗,不喜欢也可以考虑不升级新版,或者自己 fork 一份想用什么单词用什么单词

打个岔,当年我一直吐槽 python 的包管理很垃圾,自从写了 node 项目之后,就不说了。。

我是每月至少更新一次,如果有测试那就无感升级了

你需要使用 antfu/nini = ‘npm install|yarn install|pnpm install|bun install`
其他同理,见 https://github.com/antfu/ni


unplugin ,不得不提 Nuxt 团队给前端 DX 做了好多贡献

前端的确 变化太快了 大到框架小到库 总喜欢整点新花样 学习者就痛苦了

真是 shishi 又 fafa 啊

前端项目 N 年前的项目 可能 run 不起来 一片红

OP 怎么还没回复 12 楼的呢? 我瓜子都买好啦

#24
确实
不过要升级的时候就想哭了😭

虽然没有 OP 说的这种问题,但是别的版本问题也不少。5.4 不能无缝切 5.6 ,5.6 不能无缝切 7 。

前端项目记得锁版本

不能依赖锁版本吗

有些 cli 更新了版本 为了和旧版不冲突 就会改这个

因为 js 太 tmd 灵活了,没有版本兼容考虑,自然而然地可以玩出更多花来。

上面 run 不起来的都没 commit lock 文件?还有 node 版本也要写到 package ,json

这贴有意思







运行 wrangler init 会提示说 init 命令将在新的版本中被淘汰,新的命令叫 npm create xxx, 我打错成 wrangler create 了

你说的对,应该是 npm create cloudflarelatest xxx 或者 npx wrangler xxx create xxx, 反正是警告说 wrangler init 不在支持了。WARNING The init command is no longer supported! Please use npm create cloudflare\2 --test instead.

lock 恒久远,版本永流传

变来变去不是问题,
没有编译器检查才是问题

虽然但是,现在除了旧项目用 npm ,新项目基本都用 pnpm

很多知名的开源库,如 vue/vite/next.js 都是用的 pnpm

pnpm 不存在你说的这个 node_modules 问题

我特别不能理解的就是 nodejs 的东西 2 年后,我 tmd 编译不出来。。。

跟开发者经验和技术水平有关吧 ,前端门槛低良莠不齐是这样的了, 我初出茅庐的时候也不会关注这些问题,现在我不仅锁死版本,依赖库都是放自己私库管理的

如果锁好了依赖版本和 node 版本,应该不会出现编译不过的情况吧🤔

想问一下,cf 的 worker 适合做什么项目呢,我感觉很不方便

能快速开发 api 服务啊,自从前阵子发现它能直接导入 html 以后,我现在甚至前端渲染直接通过 worker 了。对我来说最重要的应该是免费吧,我大部分应用程序都通过 worker 部署,其中包括盈利的软件,外部成本就只有域名费了,维护都不用,关键是不用担心同时在线人数多了怎么办这类问题。可能是习惯问题,用惯了以后,啥东西都会看一下能不能通过 worker 来实现。

不好意思偏题了,我觉得 cf worker 适合做快速开发,省去租服务器、部署环境等工作环节。自从有了 AI 加持,对于轻量级运用,从买域名到产品上线最快两根烟功夫就能发布

字面意思就是牧马人,可能是作者就是喜欢这个词吧

连 npm 都 tm 变,真是服了,npm 变成 pnpm ,过几年怕是又要变成 ppnpm ,ppppnpm ,pppppppnpm

#61

显然你没有搞清楚 npm 和 pnpm 的关系,它们有点类似 python 里 pipenv/poetry 的关系,各有优劣

pnpm 是某群开发者对 npm 的某些机制不满意搞出来的,从我个人认知目前情况来看,pnpm 将会成为未来很长一段时间的主流

> 过几年怕是又要变成 ppnpm

既然你说是那就是吧,如果你对 npm 不满意,你完全可以 pull/fork 它,用你自己的知识修改让它符合你自己的需求即可,当然大多数人都是没能力改也懒得改就只能骂了,如果我连控制台错误都(看/搜索)不出来是哪个的问题,那我就只能捏着鼻子用了

应该没有什么技术是一成不变的吧。哪怕是完美语言 php 呢,不也变成了 PHP: Hypertext Preprocessor 了。

会变说明之前的有问题

这也能扯到 nodejs 啊?看了下回复还能扯到 npm 的问题?太过抽象了,不了解清楚直接上论坛张口就来

其实,感觉应该是很多前端喜欢追新,比如:package.json 中的包通常都是 vue^3.1.2 这类的,而不是 Vue-3.1.2 ,像 Vue 这种大型的项目可能还好点,有很多人进行测试,很多个人开发者直接不单元测试的,将功能实现了就进行打包了,等用户反馈了,然后继续修改,用户还需要清理本地的 npm 包。

其实,Java 也是类似的;不过,Java 有大一统的 SpringBoot 相对而言,目前好点;毕竟,将许多包都封装为 starter 了,毕竟这些 starter 都是各个场景的,进行了大量的测试。

我猜修改的原因是方便用户不需要再安装 wrangler 的 cli 只需要安装 node/npm 就可以初始化项目
如果你喜欢 init ,也可以用 npm init ,npm create 是 npm init 的别名

啊 。。。。。。。。你咋不说变成 yarn 了。。。。

恐怕不止 npm 变了。现在也不用 node 了,新的都是用 bun

npm -> yarn -> pnpm ->? bun

开发水平差距太多。。锁死版本。。然后依赖库又不在私有库。。在私有库,naxus 又有默认超时时间。几个月不动的依赖库又没了。反正我每年都碰到一次。

不折腾怎么有 kpi ?

你这种情况我还真没见过,这样,你先百度搜索 oracle jdk ,然后点击第一个结果进官网下载个 jdk8

在Node.js社区中,“变来变去”的现象通常指的是其快速迭代和不断变化的特性,这主要由以下几个因素驱动:

  1. 技术快速发展:Node.js作为一个开源项目,其生态系统的发展速度极快。新特性和工具的不断涌现,促使开发者不断尝试和采用最新的技术栈。

  2. 版本更新频繁:Node.js遵循语义化版本控制(Semantic Versioning),主版本号的提升往往伴随着重大变更。例如,Node.js 8到10的版本升级中,引入了Async/Await等关键特性,极大地提升了开发效率。

  3. 社区驱动:Node.js的开源特性意味着其发展方向和功能特性在很大程度上由社区决定。社区的需求和反馈会直接影响Node.js的迭代方向。

  4. 依赖库更新:Node.js项目通常会依赖大量的第三方库,这些库的更新也会促使项目本身进行相应调整。

以下是一个简单的Node.js版本升级示例,展示了如何从旧版本迁移到新版本,并使用Async/Await特性:

// Node.js 8 及以下版本
function fetchData(callback) {
  // 使用回调函数
}

// Node.js 10 及以上版本
async function fetchData() {
  try {
    const data = await someAsyncFunction();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

综上所述,Node.js用户“变来变去”并非出于随意,而是为了更好地适应技术的发展和社区的需求。

回到顶部