Grunt 变量作为文件名和文件路径

Grunt variable as filename and file path

我正在尝试使用 Grunt 选项来定义文件路径和文件名。这曾经有效,但现在我遇到了意外的令牌错误。

var myTarget = grunt.option('target');
'build/assets/css/' + myTarget + '.css': 'source/scss/' + myTarget + '/styles.scss'

您应该对文件名和字符串中的变量使用特殊占位符。首先,您应该加载选项(使用 grunt.option())或配置(使用 grunt.congif()),作为 Grunt initConfig 方法的选项。那么你应该使用特殊的占位符 <%= varname %> 来使用加载的选项或配置。

grunt.initConfig({
    target : grunt.option('target'),
    ...
        files : {
            'build/assets/css/<%= target %>.css' : 'source/scss/<%= target %>/styles.scss'
        }
    ...
});

配置也可以加载对象,所以特殊占位符也可以匹配对象属性:

grunt.config('definitions', (function() {
    return {
        target : 'my-target'
    };
})());

稍后在您的配置中:

grunt.initConfig({
    config : grunt.config('definitions'),
    ...
        files : {
            'build/assets/css/<%= config.target %>.css' : 'source/scss/<%= config.target %>/styles.scss'
        }
    ...
});

在 Grunt 官方网站上阅读更多关于 Grunt option, config and templates 的信息。

希望对您有所帮助。