小小的事后分析
上周,我们在 GitHub 上发布了 gulp v4.0.0-alpha.3,人们非常兴奋!我们预计它会是 breaking,但我们没有意识到这些变化的影响有多深远。这是由于有 6,752 个模块依赖于 gulp-util;其中许多使用了一个极其过时的 Vinyl 版本。
请使用下面的步骤帮助我们解决这个问题:/gulpjs/gulp-util-ca3b1f9f9ac5#635d。
为什么现在才停用?
我们从 2014 年开始计划停用 gulp-util,因为它只是一堆模块。如果你只是使用 gulp-util 进行日志记录,为什么还要下载 beeper 模块呢?这会大大增加插件和 gulp 自身的下载大小。我们曾希望人们会过渡到更小的模块,但似乎每个人都继续沿用了现状。
我们计划使用更简单的过渡路径进行停用,但上周的变化证明这是一个比我们预期的问题更大的问题。过时的 Vinyl 依赖不兼容,但仍然被许多插件使用。但是,v2 版本的 Vinyl 不会与 gulp-util 一起发布,因为我们希望插件作者过渡到单独的模块。
这导致我们在 npm 上标记了一个警告模块——这不是我们希望的优雅过渡。当你的插件之一安装了 gulp-util 时,你将收到停用的通知,但在你遵循下面的修复步骤之前,你不会知道哪个插件导致了警告。
如果使用 gulp-util 的插件没有使用 gutil.File
API,则可能不会出现问题。虽然不是那么紧急,但插件作者仍应该过渡到其他工具。
帮助我们解决生态系统的问题
使用以下步骤,你可以帮助插件作者迁移出 gulp-util。
-
运行
npm ls gulp-util
以获取依赖于它的插件列表。 -
对于每个依赖插件,运行
npm issues {PLUGIN NAME}
,它将打开其问题跟踪器。 -
打开一个问题或拉取请求,使用以下 API 替换来删除 gulp-util:
-
gutil.File
=> https://www.npmjs.com/package/vinyl -
gutil.replaceExtension
=> Vinyl 对象上的.extname
属性或 https://www.npmjs.com/package/replace-ext -
gutil.colors
=> https://www.npmjs.com/package/ansi-colors -
gutil.date
=> https://www.npmjs.com/package/date-format -
gutil.log
=> https://www.npmjs.com/package/fancy-log -
gutil.template
=> https://www.npmjs.com/package/lodash.template -
gutil.env
=> https://www.npmjs.com/package/minimist -
gutil.beep
=> https://www.npmjs.com/package/beeper -
gutil.noop
=> https://www.npmjs.com/package/through2 -
gutil.isStream
=> 在 Vinyl 对象上使用.isStream()
方法 -
gutil.isBuffer
=> 在 Vinyl 对象上使用.isBuffer()
方法 -
gutil.isNull
=> 在 Vinyl 对象上使用.isNull()
方法 -
gutil.linefeed
=> 在代码中使用字符串'\n'
-
gutil.combine
=> https://www.npmjs.com/package/multipipe -
gutil.buffer
=> https://www.npmjs.com/package/list-stream -
gutil.PluginError
=> https://www.npmjs.com/package/plugin-error
评论(0)