Grunt 相对文件路径通配

Grunt relative file path globbing

是否可以在文件路径中的目录上部分使用 Globbing?

我设置了一个 grunt-contrib-less 任务,我的任务的文件路径如下所示:

files: {
  "../../application/user/themes/some-theme-5.1.1.5830/css/main.css": "less/base.less",
}

但是相对路径中的版本号有时可能会发生变化,例如:

files: {
  "../../application/user/themes/some-theme-5.1.1.5831/css/main.css": "less/base.less",
}

理想情况下,我想要这样的东西:

files: {
  "../../application/user/themes/some-theme-*/css/main.css": "less/base.less",
}

有办法吗?使用上述语法,它会在星号后停止搜索。

实现此目的的一个潜在解决方案是利用 g运行ts --options 功能。

当运行通过命令行执行 g运行t 任务时,可以指定额外的 选项 值。

在您的方案中,您可以传入要更改的文件夹名称的版本号。 (即在您的情况下,您尝试使用星号字符 (*) 指定的部分,例如 '5.1.1.5830'

警告要使该解决方案有用,它确实需要知道该值是什么,(版本号),在通过命令行 运行 执行任务之前预先确定目标文件夹。


示例Gruntfile.js

module.exports = function(grunt) {

    grunt.initConfig({

        themesFolder: {
            namePart: '0.0.0.0' // <-- If no option is passed via the CLI this name will be used.
        },

        less: {
            production: {
                options: {
                    // ...
                },
                files: {
                    // The destination path below utilizes a grunt template for the part
                    // of the folder name that will change. E.g. '5.1.1.0'
                    '../../application/user/themes/some-theme-<%= themesFolder.name %>/css/main.css': 'less/base.less'
                }
            }
        }

    });

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

    grunt.registerTask('saveFolderNameFromOption', 'Uses the option provided to configure name part.', function(n) {
        var themesFolder = grunt.option('themesFolder');
        
        if (themesFolder) {
            // Store the option value so it can be referenced in the less task.
            grunt.config('themesFolder.namePart', themesFolder);
        }
    });

    grunt.registerTask('processLess', ['saveFolderNameFromOption', 'less:production']);

};

运行正在执行 ProcessLess 任务

运行通过命令行执行任务如下:

$ grunt processLess --themesFolder=5.1.1.5830

注:指定的附加选项。即:--themesFolder=5.1.1.5830

使用上述命令时,.css 输出将定向到以下路径:

'../../application/user/themes/some-theme-5.1.1.5830/css/main.css': 'less/base.less'


现在,每次 运行 任务都会相应地修改选项。

好处: 通过 CLI 提供版本号作为一个选项将避免每次 运行 时都必须重新配置您的 Gruntfile.js