写点什么

npm 4.0 废弃 Prepublish 生命周期脚本

  • 2016-10-31
  • 本文字数:1146 字

    阅读完需:约 4 分钟

npm 发布了 4.0.0 版本,这是 2015 年发布 npm 3 之后的第一个语义化的主版本。

尽管依然是一个实验性的发布版本,v4 还是带来了一些破坏性的变更,包括重写的npm search、废弃prepublish以及npm scripts行为的变化。

Kat Marchán 是 npm 的软件工程师,他在 Github 上分享了这次升级的消息,他提到npm 之前的主版本更新曾经带来过非常严重的影响,但4.0 对开发人员日常使用所带来的影响会小得多,它的变化主要局限在命令行接口上,对更大的生态系统的影响很小。

Marchán 提到最新的这次发布也宣告一个时代的结束,npm 2.x 和 3.x 将会进入维护状态,“除了重要的缺陷修正和安全补丁”,它们将不会再进行更新。

关于npm search,Marchán 这样说到:

让我们面对这一问题——npm search已经不能正常运行了。这些年随着时间的推移,它变得越来越慢,除此之外,它已经到了一个临界点,我们已经无法将整个注册表元数据放到内存中了,试图使用这个命令的人会看到 node 将提示一个非常恐怖的内存溢出崩溃。

为了提升开发人员的体验,Marchán 说要彻底修改npm search,不过这尚需一段时间,但是团队已经重写了之前的实现,以便“在运行过程中从搜索端点和本地缓存中得到结果。”

4.0 还废弃了 npm 中的prepublish生命周期脚本,将其替换为prepare脚本。Marchán 告诉 InfoQ:“新脚本的运行方式完全相同,会有一个新的 prepublishOnly事件,只有进行 npm publish的时候,该事件才会执行。”

Marchán 说,只有当个人用户发布他们自己的包的新版本时,才会受到这个破坏性变化的影响,已经发布到 npm 注册表上的包已经超过了 350,000 个,这个更大的生态系统并不会受此影响。

对于用户来说,npm 4.0 版本的发布也使得 partial shrinkwraps 成为了历史, npm shrinkwrap 允许用户锁定整个依赖树,让每个包使用特定的版本,这样的话,两个不同的人或者在两个不同的时间点,能够执行两个不同的构建。

Marchán 这样说到:

如果在你的项目中有npm-shrinkwrap.json的话,那么 npm 将不会安装任何没有明确列出的包,除非它是devDependency。这为一些优化打开了方便之门,通过移除一些令人望而生畏的极端场景,npm shrinkwrap 的使用也会更加便利。如果你通过npm shrinkwrap --dev为 shrinkwrap 添加了devDependencies的话,我们会忽略package.json中的devDependency安装。

npm 最新的主版本不仅包含了破坏性的变更,在发出的请求中,npm 还会发送Npm-ScopeNpm-In-CI头信息,允许注册表实现感知用户 / 作用域的特性和服务。

4.0 将会成为 npm 官方的最新发布版本,4.0.1 版本很快也会推出,这个版本会包含一些小的功能提升。

npm 团队推荐开发人员将 npm 升级到最新版本,但是他们也会继续维护一个版本,用于 Node 的默认分发。

查看英文原文 npm 4.0 Deprecates Prepublish Lifecycle Script

2016-10-31 19:002636

评论

发布
暂无评论
发现更多内容

Android Crash监控方式

Darren

监控 异常检测 Android开发 NativeCrash

Spring Boot 2.0 实现优雅停机

U2647

Spring Boot 4月日更

从Map和Reduce角度谈Hive优化

五分钟学大数据

hive 4月日更 hive性能优化

想要写优秀的设计测试用例,不懂这个可不行!

程序员阿沐

软件测试 自动化测试 测试开发 测试用例 测试工程师

MySQL 表列数和行大小有哪些限制?

码农架构

MySQL 运维

双非渣硕!四面阿里收到offer后,才发现学长给的面试笔记有多强大

Java 编程 程序员 面试 计算机

anyHouse-iOS 高仿ClubHouse

anyRTC开发者

ios 音视频 WebRTC RTC 语音通话

Disruptor 源码解读

lich0079

Java volatile Disruptor CAS Concurrent

阿里资深技术专家崮德:如何成就更好的自己

阿里巴巴中间件

会议更流畅,表情更生动!视频生成编码 VS 国际最新 VVC 标准

阿里云视频云

阿里云 视频压缩 VVC

Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩

阿里巴巴云原生

大数据 容器 云原生 监控 弹性计算

⼤规模短⽂本聚类的设计和实践

百度Geek说

聚类 query 内聚

中寰-卜钢-采访提纲:车联网行业发展趋势

马踏飞机747

采访

skywalking dubbo agent 分析

kaiwen

联盟链技术

360技术

灰度发布系统架构设计

xcbeyond

微服务 灰度发布 4月日更

用知识点+实例+项目完全深入地讲解springboot原理,这份《springboot实战派》火了!

Java架构之路

Java 程序员 架构 面试 编程语言

如何打造高效技术团队|专访前美篇首席架构师张超

穿过生命散发芬芳

调查采访能力考核

第一课作业纠正

杰语

我是如何开始写作的

happlyfox

个人成长 4月日更 1 周年盛典

toB SaaS会成为苏州下⼀个“⼀号产业”么?

龙归科技

数字化 tob

企业架构设计方法TOGAF介绍

joinM

企业架构 技术架构 业务架构 TOGAF 技术与业务

国产监控夜莺v4来了,大幅降低部署维护难度

巴辉特

Nightingale 滴滴夜莺

罗美琪和春波特的故事...

阿里巴巴云原生

容器 开发者 云原生 开发工具 消息中间件

混合云安全简史

龙归科技

混合云

DBA 行业是否将会消亡?

BinTools图尔兹

运维 dba 数据库管理工具

pdf.js使用小结

空城机

大前端 4月日更 pdf.js

留存率计算

Flychen

iOS 面试策略之算法基础6-7节

iOSer

ios 面试 算法 ios开发 算法解析

当时尚撞上区块链,为潮酷创意赋予专属“ID”

旺链科技

产业链

Spring Boot 两行代码轻松实现国际化

Java架构师迁哥

npm 4.0废弃Prepublish生命周期脚本_JavaScript_James Chesters_InfoQ精选文章