【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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:002527

评论

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

模块二课后作业

Damon

微信朋友圈高性能架构

chenmin

用WASM连接Rust与Python | Rust 学习笔记(三)

李大狗

Python rust 狗哥 Wasm

Ubuntu 20.04 快捷键整理

TroyLiu

Linux ubuntu 效率 操作系统 快捷键

这三年被分布式坑惨了,曝光十大坑

悟空聊架构

【LeetCode】移除元素Java题解

Albert

算法 LeetCode 4月日更

app架构师,10天拿到字节跳动安卓岗位offer,好文推荐

欢喜学安卓

android 程序员 面试 移动开发

新一代容器,安全容器kata-container实践

ilinux

Kubernetes 容器

面试官关于线程池的这个问题把我问懵逼了。

why技术

面试 Jav 1 周年盛典

6种常见的地标识别算法整理和总结

华为云开发者联盟

KNN CNN 地标识别 GLDv2 地标识别算法

关于 Spring 中 getBean 的全流程源码解析

小傅哥

Java spring 源码分析 小傅哥 getBean流程

聪明人的训练(十九)

Changing Lin

4月日更

细说Python Lambda函数的用法,建议收藏!

华为云开发者联盟

Python 函数 匿名 Lambda函数 表达式

女朋友问我:什么是 MySQL 的全局锁、表锁、行锁?

一个优秀的废人

MySQL 数据库 锁机制 备份

一文搞懂分布式锁的原理与实现

架构精进之路

分布式锁 4月日更

深入剖析共识性算法 Raft

vivo互联网技术

复制 选举 分布式协调 Leader Follower

java数组打印的几种方式

Sakura

4月日更

MySQL权限管理实战!

Simon

MySQL 权限管理

女朋友问我:MySQL 事务与 MVCC 原理是怎样的?

一个优秀的废人

Java 数据库 事务隔离级别 事务 MVCC

一文带你更方便的控制 goroutine

万俊峰Kevin

线程 并发 Go 语言 goroutine

图算法系列之无向图的数据结构

Silently9527

Java 数据结构和算法 图算法 无向图

Spark任务等待与运行策略

小舰

4月日更

使用gradle插件发布项目到nexus中央仓库

程序那些事

Java maven Gradle 程序那些事

带你入门目标检测算法

华为云开发者联盟

网络 数据集 目标检测 yolo two-stage

阿里P7手把手教你!系统学Android从零开始,内含福利

欢喜学安卓

android 程序员 面试 移动开发

面向K8s设计误区

阿里巴巴中间件

云计算 Kubernetes 容器 分布式

[转] 程序员在工作中如何做好技术积累

小江

技术管理 架构师 自我思考 个人总结

陌陌一面,为什么SpringBoot的 jar 可以独立运行?

Java小咖秀

jar maven springboot 集成 pom

技术干货 | 基于MindSpore更好的理解Focal Loss

华为云开发者联盟

损失函数 mindspore Focal Loss 图像物体检测 采样

重读《重构2》- 封装记录

顿晓

重构 4月日更

五一高铁票难抢?用RPA机器人试试!

华为云开发者联盟

RPA

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