【问题标题】:Grunt-contrib-copy: variables within the rename functionGrunt-contrib-copy:重命名函数中的变量
【发布时间】:2015-05-14 16:12:50
【问题描述】:

我在gruntfile.js 中有以下复制任务

copy: {
        css: {
            expand: true,      
            cwd: 'min/css',  
            src: 'theme_<%= props.majorversion %>.<%= props.minorversion %>.min.css',          
            dest: 'dest/dir/',
            rename: function(dest, src) {
                return dest + src.replace('_<%= props.majorversion %>.<%= props.minorversion %>','');
            }
        }
    }

目前,文件已成功复制,但复制后,我想删除构成文件名一部分的版本号。

它们在 gruntfile 的早期定义,并且在重命名函数之前按预期工作。

目前我得到file_1.123.css,我想最终得到file.css

我尝试了各种不同的方法将变量传递给重命名函数,但都没有成功。

谢谢。

【问题讨论】:

  • 这是因为到那时该文件已命名,并且 _&lt;%= props.majorversion %&gt;.&lt;%= props.minorversion %&gt; 已被替换。为什么叫它一个名字然后重命名它,而不是仅仅命名它你想要的名字?不熟悉重命名方法只是猜测
  • 初始文件已经存在并且文件名可能会改变。该文件的新副本正在与 Service Worker 一起使用,并在文件缓存中被引用,在该文件缓存中使用不会更改的静态名称将是有益的。
  • 足够公平:) 如果您在重命名函数中控制台.log 文件名是否已转换?如果是这样,用正则表达式替换可能会奏效。

标签: javascript gruntjs grunt-contrib-copy


【解决方案1】:

改用substring

rename: function(dest, src) {
           return dest + src.substring(0, src.indexOf('_')) + '.css';
        } 

【讨论】:

  • 谢谢,这给了我想要的结果。
猜你喜欢
  • 2017-07-05
  • 2016-03-06
  • 2018-02-13
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多