【问题标题】:gunrt-contrib-copy renaming file extensionsgunrt-contrib-copy 重命名文件扩展名
【发布时间】:2017-07-05 20:05:40
【问题描述】:

我有一个目录和一些子目录,所以当我查找我的文件时,我会使用像

这样的通配模式
'src/**/*.js'

问题是我想将扩展名重命名为 .old.js

问题是我需要重命名 .old.js 文件并保留在找到的目录中,但我不清楚这是如何实现的。

我尝试了很多方法,到目前为止唯一有效的方法是在单独的复制任务中分别查看每个目录,这并不是我真正想做的。

有人有其他方法吗?

【问题讨论】:

  • .old.js 文件需要复制到与其原始 .js 对应文件相同的文件夹中,并且不存在 old.js 文件

标签: file gruntjs rename grunt-contrib-copy


【解决方案1】:

初始目录结构

考虑以下虚构的目录结构:

src
├── 1.js
├── 2.js
└── a
    ├── 3.js
    ├── 4.js
    └── b
        ├── 5.js
        ├── 6.js
        └── c
            ├── 7.js
            └── 8.js

示例一

Gruntfile.js

您可以按如下方式配置您的grunt-contrib-copy 任务:

module.exports = function(grunt) {

    grunt.initConfig({

        copy: {
            js: {
                files: [{
                    expand: true,
                    dot: true,
                    cwd: 'src',
                    dest: 'src/',
                    src: [
                        '**/*.js'
                    ],
                    rename: function(dest, src) {
                        return dest + src.replace('.js', '.old.js');
                    }
                }]
            }
        }

    });

    grunt.loadNpmTasks('grunt-contrib-copy');

    grunt.registerTask('default', [
        'copy:js'
    ]);

};

结果目录结构(示例一)

使用如上所示配置的Gruntfile.js 通过CLI 运行$ grunt 后,将产生以下结果:

(注意:每个原始 .js 文件已复制到相同的文件夹位置并添加了 .old.js 扩展名)

src
├── 1.js
├── 1.old.js
├── 2.js
├── 2.old.js
└── a
    ├── 3.js
    ├── 3.old.js
    ├── 4.js
    ├── 4.old.js
    └── b
        ├── 5.js
        ├── 5.old.js
        ├── 6.js
        ├── 6.old.js
        └── c
            ├── 7.js
            ├── 7.old.js
            ├── 8.js
            └── 8.old.js

示例 2

如果您不想保留原始的.js 文件,那么您还需要使用grunt-contrib-clean 删除原始文件。

Gruntfile.js

module.exports = function(grunt) {

    grunt.initConfig({

        copy: {
            js: {
                files: [{
                    expand: true,
                    dot: true,
                    cwd: 'src',
                    dest: 'src/',
                    src: [
                        '**/*.js'
                    ],
                    rename: function(dest, src) {
                        return dest + src.replace('.js', '.old.js');
                    }
                }]
            }
        },

        clean: {
            originaljs: [
                'src/**/*.js',
                '!src/**/*.old.js'
            ]
        }

    });

    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-clean');

    grunt.registerTask('default', [
        'copy:js',
        'clean:originaljs'
    ]);

};

结果目录结构(示例二)

这次在使用修改后的Gruntfile.js 运行$ grunt 后将产生以下结果:

(注意:每个原始的.js 已被删除,仅存在.old.js 扩展名。)

src
├── 1.old.js
├── 2.old.js
└── a
    ├── 3.old.js
    ├── 4.old.js
    └── b
        ├── 5.old.js
        ├── 6.old.js
        └── c
            ├── 7.old.js
            └── 8.old.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    相关资源
    最近更新 更多