Github很早就在个人主页和组织首页增加了Packages功能,意图很明显,就是整合开发上下游生态链,我注意到了这个细节,但没想到 Github 会收购NPM,收到这个消息既意外也不意外,毕竟微软财大气粗。
官方原话是“Discover and publish public and private packages in one place”,这里包含了3层意思,1、发现和发布,在 Github 有源码也有包,让开发者更方便,2、公开和私有的模块,私有的模块应用场景也是很多的,比如很多公司内部自建NPM源的其中一个原因是就是为了私有化,保证业务代码的安全。3、都放在一处管理,做好代码托管,工程管理,又将手伸向了更为基础的包管理领域,可见 Github 大大的野心。这其实对程序员来说是好事,你要做的只是写好代码,其他工作 Github 都会帮你做起来。GitHub 今天宣布收购 NPM,收购之后的 NPM 仍会保持免费、公开的,大家可以放心使用。GitHub 也承诺会改进 NPM 核心体验。今年底,NPM 付费用户将可以选择迁移到 GitHub Packages(GitHub 也将继续支持 NPM 付费用户)。
在今天,NPM有超过123万+的模块,内容涵盖了js能够涉及的方方面面,是今天Node.js和大前端繁荣的真正底座。 NPM完全用JavaScript写成,最初由艾萨克·施吕特(Isaac Z. Schlueter)开发。我们看一下Isaac的工作经历,Ryan Dahl在Joyent公司于2009年发布Node.js第一个版本,2010年Isaac进入Joyent,Isaac表示自己意识到“模块管理很糟糕”的问题,并看到了PHP的PEAR与Perl的CPAN等软件的缺点,于是编写了NPM。直到2014年1月,开始以公司的方式运作NPM。NPM伴随 Node.js 崛起,在大前端如火如荼的发展中,伴随大前端的发展相互成就,这其实也是技术创业的很好的方式。
NPM, Inc毕竟是垂类的的小公司,被收购也许是最好的结局,再次感谢Isaac的伟大工作。其实,在Node.js世界里,有很多这样的默默付出的大佬。比如一直被忽视的CNPM作者苏千。NPM固然优势明显,没有CNPM搭建私有源,Node.js还是很难在企业里大量应用的,此一极大功劳也。正是有了Isaac和苏千这些保有初心的人护航Node.js,才有了今天Node.js的美好前景,我坚信Node.js和NPM未来的发展会越来越好的。
看到狼叔也看好这次收购,我就放心了
@justjavac 要不要买点微软股票?
@i5ting 从没炒过股,不知道怎么买
怎么不劝Apache割让maven?估计还是屁股决定脑袋,npm包多,买下成本低,正好博个名声集开源小成。
mvn deploy -Dregistry=https://maven.pkg.github.com/phanatic -Dtoken=$GH_TOKEN
npm客户端继续改进,有指望了
@alsotang npm 的源码真是一言难尽,不过比 node.js 源码好很多,但是和隔壁 yarn 比就差远了。微软爸爸赶紧用 ts 重构一下 npm 吧
@justjavac yarn的cli处理模块clipanion写的很漂亮。参见 https://github.com/i5ting/clipanion-test
@i5ting 我也是看 yarn2 的源码时发现的,我正在把这个模块移植到 deno,或者在 deno 里面用类似的思想重新实现一个
自从用过 nest 后,就对 decorator 爱不释手了
@justjavac decorator合理用,最怕瞎几把用的,恶心死了。适度的加入是锦上添花
商业化了
@i5ting 过犹不及。 比如 await/async 的滥用(滥用是主语,前面可以换成其它技术)。
个人觉得 decorator 的一个滥用就是 TypeORM 的 @Column
(好像是这个名字) 对类型(字段)的注解。好比是画蛇添足。
@waitingsong 还有一个滥用(或者即将被滥用)的就是 optional chaining
@justjavac optional chaining
存在也算是好多年了吧…要滥用也不等现在啊,jq不就是optional chaining的代表吗
@alsotang 以后会出现一种 code style,以安全保守的名义,所有的属性访问都使用 ?.
, 就是这种画风:response?.data?.list?.user?.address?.city
@justjavac 我怎么感觉npm源码比nodejs差很多啊
@1316346949 半斤八两,但是 npm 是纯 js 写的,没有哪些歪七歪八的 C++ 代码,所以感觉不是太糟糕(虽然也很糟糕
@justjavac 最新版 vs code 和 typescript,ts 项目,如果对象类型的某个属性是可选,那么写代码的时候 vscode (or eslint?)就会自动把 foo.name
给你改成 foo?.name
……
以后恐怕就是一堆的 ?.
操作符号了,然后再加上一堆 ??
,真要疯得~~
再以后,一堆的 |>
, js 代码真成天书了……
@waitingsong 如果是 ts 还好,至少可以推断出哪些是 nullable,哪些不是。
@justjavac 之前不是还看到npm有代码使用了rust吗,不过估计是接口服务的代码
@iyuq 你是说 npm 源码,还是托管在 npm 上的包啊。如果是 npm 源码,应该没有用到任何 rust 代码。如果是托管在 npm 的包,rust 代码非常多。
很棒!期待和Azure云打通,建立统一的js生态。