Gulp没有覆盖JS文件

6

当我尝试使用gulp覆盖文件时,遇到了一个问题。为了让您理解我的问题,这里是我尝试做的事情的示例: 我的项目文件路径:

- Project
 |- clients
   |- clientBase
     |- JS
       |- jsexample.js
       |- jsexample2.js
     |- CSS
     |- HTML
   |- client1
     |- JS
       |- jsexample2.js
 |-dist
  1. 将基础源代码复制到 dist 文件夹。
  2. 将自定义客户端源代码复制并覆盖 dist 文件夹中的内容。

我在做什么

const args = require('yargs').argv;
const src = {
  base: './Project/clients/clientBase',
  client: `./Project/clients/${args.client}`,
};
const dist = './Project/dist';
const runSequence = require('run-sequence');

gulp.task('copy:base', function(){
  return gulp
    .src(`${src.base}/**/*`)
    .pipe(gulp.dest(dist))
});

gulp.task('copy:client', function(){
  return gulp
    .src(`${src.client}/**/*`)
    .pipe(gulp.dest(dist))
});

gulp.task('copy', function(){
  if (args.client) {
    runSequence('copy:base', 'copy:client');
  } else {
    runSequence('copy:base');
  }
});

实际问题

问题在于copy:client任务没有覆盖dist文件。

我已经检查过的内容

我已经检查了文件路径和文件内部的内容。参数client已被传递,因此该任务正在执行。


你尝试过在下一次复制之前删除dist文件夹吗?那样行吗? - palaѕн
你好 @palaѕн,是的,我尝试了,但问题仍然存在。 - João Rodrigues
也许你可以像这样为它添加一个新任务。 - palaѕн
即使试图彻底删除 dist 文件夹内的文件,(copy:base) 也将复制整个基础客户端文件。因此,在执行 (copy:client) 时,已经有了基础文件,因为这些文件是按顺序运行的。 - João Rodrigues
我测试了你的代码。你所展示的内容没有任何问题。但请编辑你的问题以显示你的src对象以及如何获取args.client值。 - Mark
显示剩余3条评论
2个回答

0
经过更多的研究,我注意到在我的任务序列链中的“默认任务”中,还有另一个任务再次复制基础代码,而没有任何日志记录。

您应该删除这个问题 - 您展示的代码是好的,而您没有展示的代码才是问题所在。唉... - Mark

0

dist需要加引号:

.pipe(gulp.dest('dist'))

你可能还需要根据你运行 gulp 的位置更改路径。


Dist实际上是一个变量。它存储了dist的位置,这些任务运行时没有错误。问题在于最后一个运行的任务(copy:client)没有覆盖dist文件夹中的文件。 - João Rodrigues
啊,抱歉——那不太清楚。在这种情况下,我理解你是想让客户端1 / jsexample2.js 文件覆盖之前复制的 base / jsexample2.js 文件,对吧?(copy:base)确实成功复制了这些文件? - katsho
是的,@katsho,你说得对。是的,在完成这个任务(copy:base)之后,基础客户端会被正确地复制到dist文件夹中。 - João Rodrigues
嗯,在这种情况下,我无法看出您的操作有任何错误 - 基础和客户端应该按顺序运行,而不是并行运行,因此应该有效。您可以尝试.pipe(gulp.dest('dist', {overwrite:true})),尽管那应该是默认设置。之后可能是一个操作系统的问题 - 原始写入是否保持了对已复制的base js2example.js文件的句柄,只有足够长的时间才能防止覆盖? - katsho
1
主要目标是使用客户端源代码覆盖基础源代码。即使在管道选项中强制使用 overwrite: true,它也没有被覆盖。 - João Rodrigues

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接