即使文件未更改,如何执行 gulp 任务

How to execute a gulp task even if the file is unchanged

编辑:额外添加用于任务执行的代码

我有一个我无法回答的问题。即使文件未更改,我也需要 gulp 来执行污点。目前只有当我更改源文件时,它才会重新创建新的目标文件。但我希望它能够创建它,即使它没有改变。提前谢谢你:)

外部库:"gulp-inject-string": "^1.1.2",

    // Add timestamp in cache PWA
    function pwa_cache() {
      return src(`${paths.pwa}/serviceworker.tmp.js`)
        .pipe(inject.prepend('const CACHE_VERSION = "pwa-v-'+ new Date().getTime() +'"; \n'))
        .pipe(rename('serviceworker.js'))
        .pipe(dest(`${paths.js}/pwa/`,{overwrite:true}))
    }
    // Generate all assets
const generateAssets = parallel(
  styles,
  scripts,
  pwa_cache,
  imgCompression
)
exports.default = series(generateAssets)
exports["generate-assets"] = generateAssets

您是否可能 运行在 gulp.watch() 内完成此任务?如果是这样,您需要停止监视任务并重新运行它。

好吧,我采取了不同的方式,如果它可以帮助某人,这是我找到的唯一方法,我没有时间寻找其他解决方案。 我没有添加,而是在我的文件中分配变量,然后更改它的值,我不再处理模板文件,而是直接处理原始文件。 Post 和 link 帮助我找到了答案:https://eureka.ykyuen.info/2015/07/13/gulp-rewrite-source-files-instead-of-creating-new-files/, ,

gulp 文件:

// Add timestamp in cache PWA
function pwa_cache() {
    return src(`${paths.js}/pwa/serviceworker.js`, {base: './'})
    .pipe(sourcemaps.init())
    .pipe(replace(new RegExp('django-pwa-v-\d*', 's'), 'django-pwa-v-'+ new Date().getTime()))
    .pipe(sourcemaps.write('./'))
    .pipe(dest('./'))

}

js文件:

// Cache version don't touch string assigned to the variable /
CACHE_VERSION = "django-pwa-v-1580491632502";
/////////////////////////////////////////////////////////////