【发布时间】:2017-03-31 23:04:25
【问题描述】:
我看到 this package 称为 gulp-copy,如果最新版本的 gulp 采用了它,我看不到任何地方。这从来都不是问题吗?我担心我碰巧选择了错误的包星座或者可能是一个过时的配置。
问题是:
- 在这种特殊情况下,链接的 gulp-copy 能否与 gulp 4 一起工作?
- 有没有一种通用的方法来确定哪些包适合 gulp?
【问题讨论】:
我看到 this package 称为 gulp-copy,如果最新版本的 gulp 采用了它,我看不到任何地方。这从来都不是问题吗?我担心我碰巧选择了错误的包星座或者可能是一个过时的配置。
问题是:
【问题讨论】:
没有通用的方法来确定某个包是否仅适用于 gulp 3 或 gulp 4(除了阅读该包的文档)。包创建者无法以编程方式指定他们的包支持的 gulp 版本,并且在使用为不同版本的 gulp 设计的包时没有警告。
话虽如此,根据您处理的包类型,您可以使用一些启发式方法:
常规节点包:这些包根本不是专门为 gulp 设计的。您可以将它们与 gulp 一起使用,因为您可以将任何节点包与 gulp 一起使用,但它们在 gulp 之外也有意义。
这些包应该适用于任何版本的 gulp,因为它们不包含特定于 gulp 的代码,因此独立于对 gulp 所做的任何更改。经常与 gulp 一起使用的示例是 merge-stream 和 del。
Gulp 特定的包另一方面可能会受到 gulp 更改的影响。
其中有 gulp 插件,它们是应该在带有.pipe() 的 gulp 流中使用的包。他们的名字几乎总是以 gulp- 开头,他们在 npm 上被标记为 gulpplugin 并在 GulpJS website 上列出。
这些通常也可以安全地用于任何版本的 gulp。 Gulp 流只是常规的 nodejs 流,因此这些插件应该可以与任一版本的 gulp 一起使用(尽管 nodejs 流有它们的own history of compatibility problems,但这已经不再重要了)。除非对 vinyl file format 进行重大更改,否则不会发生太多可能影响 gulp 插件的事情。
您提到的gulp-copy 插件属于这一类,应该可以安全地与 gulp 3 和 gulp 4 一起使用。
话虽如此,有一些 gulp 插件只对特定版本有意义。例如,gulp-plumber 修复了流中错误处理的烦人问题,该问题仅对 gulp 3 而不是 gulp 4 必需。gulp-src-ordered-globs 规避了 gulp 3 中忽略模式的问题,该问题已在 gulp 4 中修复。
终于有了我喜欢称之为gulp扩展的东西。它们不应该与.pipe() 一起使用。相反,它们以其他方式扩展了 gulp 的功能。
这些是您需要注意的。其中很多都处理 gulp 的任务运行能力,在 gulp 3 和 gulp 4 之间发生了重大变化。这个类别中可能有很多包只适用于特定版本的 gulp。
不过我不会太担心。这些软件包中的大多数将在其文档中突出显示它们的局限性。例如,run-sequence 在顶部有一个很大的注释,通知用户这是 gulp 3 的临时解决方案。前几天我发布了一个名为 gulp-parameterized 的包,它只适用于 gulp 4,而且它在所有情况下都在尖叫——文档顶部的大写字母。
基本上扫描你想使用的任何包的文档来做这些笔记,你应该是相对安全的。
【讨论】:
gulp-copy 来复制文件,只需gulp.dest()(请参阅此this question)。 gulp-copy 甚至说是GitHub page。老实说,我认为这个插件根本不需要存在。我自己当然从来没有用它来复制文件,如果被问到我不会推荐它。