javascript - Gulp 替换不是重命名文件,而是替换文件内容

标签 javascript gulp gruntjs

我有以下 gulp 任务,我想更改文件的文件名和内容,以替换任何匹配的字符串。

文件内容中的匹配字符串发生更改,但文件名不变。我认为它会,因为我的代码似乎与 https://www.npmjs.com/package/gulp-replace 上的示例匹配

我做错了什么?

function renameFileContents() {

  return gulp.src([
    '**/*',
    '!.github/**',
    '!languages/**',
    '!node_modules/**',
    '!.babelrc',
    '!.editconfig',
    '!.gitignore',
    '!.travis.yml',
    '!CHANGELOG.md',
    '!codesniffer.ruleset.xml',
    '!composer.json',
    '!composer.lock',
    '!config.yml',
    '!config-default.yml',
    '!gulpfile.babel.js',
    '!MIT-LICENSE.txt',
    '!package-lock.json',
    '!package.json',
    '!phpunit.xml.dist',
    '!README.md',
    '!webpack.config.js'
  ])
    .pipe($.replace('BigTest', 'Tester'))
    .pipe($.replace('Bigtest', 'Tester'))
    .pipe($.replace('bigtest', 'tester'))
    .pipe(gulp.dest('./'));

}

最佳答案

使用gulp-rename来更改文件名。添加:

const rename = require('gulp-rename');

以及 .pipe(gulp.dest('./')); 之前:

.pipe(
    rename(function(path) {
        path.basename = path.basename.replace(/BigTest|Bigtest|bigtest/, function(matched) {
            return { BigTest: 'Tester', Bigtest: 'Tester', bigtest: 'tester' }[matched];
        });
    })
)

关于javascript - Gulp 替换不是重命名文件,而是替换文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57921879/

相关文章:

gulp - 将浏览器同步放在 polymer 自定义构建的 gulpfile 中的正确位置在哪里?

yeoman - 将 Foundation 与 Yeoman 一起使用

c# - 相当于 .NET 的 DateTime.Parse 的 Javascript

javascript - Gulp browserSync 不会自动重新加载

javascript - 复选框值始终为 false ASP MVC 5

amazon-web-services - 将 Grunt 或 Gulp 与 OpsWorks 结合使用

node.js - 如何在 Cucumber JS 中只看到错误的 header ?

javascript - 有没有办法用 JavaScript 读取 Git 标签

javascript - 使用javascript获取div内的所有标签

javascript - 如何防止光标跳转到固定列文本区域中的下一行