Javascript grunt usemin不使用加速文件行替换参照块

Javascript grunt usemin不使用加速文件行替换参照块,javascript,grunt-usemin,Javascript,Grunt Usemin,我在grunt usemin中遇到了一个问题,它没有用单加速线替换未加速的参考块。参考块中的两个文件连接在一起,并被很好地美化了;单个文件metadata.min.js的版本也得到了很好的控制;但是,对已修订文件的引用不会插入index.html。只有非加速线 我正在使用: grunt usemin 2.6.0 grunt文件版本2.1.1 用于模板化的Zend框架(因此出现了奇怪的模板路径) 以下是运行grunt build之前的index.html参考块: <!-- build:j

我在grunt usemin中遇到了一个问题,它没有用单加速线替换未加速的参考块。参考块中的两个文件连接在一起,并被很好地美化了;单个文件metadata.min.js的版本也得到了很好的控制;但是,对已修订文件的引用不会插入index.html。只有非加速线

我正在使用:

  • grunt usemin 2.6.0
  • grunt文件版本2.1.1
  • 用于模板化的Zend框架(因此出现了奇怪的模板路径)
以下是运行grunt build之前的index.html参考块

<!-- build:js js/dest/metadata.min.js -->
<script src="js/metadata/MetadataController.js"></script>
<script src="js/metadata/MetadataService.js"></script>
<!-- endbuild -->
<script src="js/dest/metadata.min.js"></script>
以下是运行grunt构建后的index.html

<!-- build:js js/dest/metadata.min.js -->
<script src="js/metadata/MetadataController.js"></script>
<script src="js/metadata/MetadataService.js"></script>
<!-- endbuild -->
<script src="js/dest/metadata.min.js"></script>

为什么加速线不应该是这个样子

<script src="js/dest/metadata.min.a5851d60.js"></script>

这是grunt usemin的bug吗?某个地方的配置关闭了吗?虽然没有得到真正的回答,但这类似于:

我的头撞在桌子上有一段时间了。非常感谢您的任何见解。

有关更多信息,请尝试使用以下usemin配置运行
grunt--debug

usemin: {
  html: '../cdm_common/cdm/layouts/scripts/index.html',
  options: {
    assetsDirs: ['js/dest/rev/test'],
    blockReplacements: {
        js: function (block) {
            grunt.log.debug(JSON.stringify(block.dest));
            grunt.log.debug(JSON.stringify(grunt.filerev.summary));

            return '<script src="'+block.dest+'"></script>';
        }
    }
  }
}
最终,我用这个自定义的blockReplacements函数解决了这个问题(即,替换public/和讨厌的Windows路径):

js:函数(块){
var arr={};
for(grunt.filerev.summary中的变量键){
arr[key.replace(//\\/g,“/”).replace(//\//\//g,“/”).replace(“public/”,“)]=grunt.filerev.summary[key]。replace(//\\/g,“/”);
}
变量路径=(arr[block.dest]!==未定义)?arr[block.dest]:block.dest;
返回“”;
},

我也遇到了这种情况,问题是由于usemin块中没有正确的assetDirs造成的。您需要确保assetDirs数组包含已升级文件的父文件夹

这是目录列表,我们应该在其中开始查找当前查看的文件中引用的资产的修订版本

usemin: {
    html: 'build/index.html',
    options: {
        assetsDirs: ['foo/bar', 'bar']
    }
}
假设在index.html中引用了/images/foo.png,usemin将在assetsDirs选项的任何目录中搜索/images/foo.png的修订版本,比如/images/foo.12345678.png

换句话说,根据上述配置,usemin将搜索是否存在以下文件之一:

foo/bar/images/foo.12345678.png

bar/images/foo.12345678.png


@Billy Blaze应该能够通过将其usemin块中的assertDirs更新为
AssetDirs:['js/dest/rev/test','public']

来替换其自定义blockReplacements功能,除了Micah所说的获取正确AssetDirs路径之外,您可以设置调试变量,以实际查看正在搜索文件的路径

如果您的构建任务是“构建”,那么您将输入以下内容:

DEBUG=usemin:*,revvedfinder grunt构建

这将有助于准确跟踪您在AssetSDIR中需要的路径

usemin: {
    html: 'build/index.html',
    options: {
        assetsDirs: ['foo/bar', 'bar']
    }
}