ngHtml2J从结果中删除多个模块运行定义



我有以下吞咽任务:

gulp.task('html', function () {
    // Compile templates
    return gulp.src(templateFiles)
        .pipe(htmlmin({
            removeComments: true,
            collapseWhitespace: true,
            conservativeCollapse: true,
            removeScriptTypeAttributes: true
        }))
        .pipe(ngHtml2Js({
            moduleName: 'my.tpls',
            prefix: 'tpl/'
        }))
        .pipe(concat(libName + '.tpls.js'))
        .pipe(gulp.dest(destDirectory));
});

它在一个文件中生成几个代码块,类似于以下代码块:

(function(module) {
try {
  module = angular.module('my.tpls');
} catch (e) {
  module = angular.module('my.tpls', []);
}
module.run(['$templateCache', function($templateCache) {
  $templateCache.put('tpl/my/templates/template1.html',
    '<some-html></<some-html>');
}]);
})();
(function(module) {
try {
  module = angular.module('my.tpls');
} catch (e) {
  module = angular.module('my.tpls', []);
}
module.run(['$templateCache', function($templateCache) {
  $templateCache.put('tpl/my/templates/template2.html',
    '<some-html></<some-html>');
}]);
})();

这看起来效率很低,并且设置了很多不需要的额外字节来下载。

有没有办法调整吞咽任务,使结果更像:

(function(module) {
try {
  module = angular.module('my.tpls');
} catch (e) {
  module = angular.module('my.tpls', []);
}
module.run(['$templateCache', function($templateCache) {
  $templateCache.put('tpl/my/templates/template1.html',
    '<some-html></<some-html>');
  $templateCache.put('tpl/my/templates/template2.html',
    '<some-html></<some-html>');
}]);
})();

澄清;我正在寻找的是与grunt-html2js singleModule选项等效的选项,但适用于Gulp。我已经准备好尝试在ngHtml2Js的gull任务选项中添加singleModule: true。没用。

我通过重写标准ngHtml2Js模板来完成这项工作,然后使用gulp-tap修改文件。工作起来很有魅力!:-)

gulp.task('html', function () {
    // Compile templates
    return gulp.src(templateFiles)
        .pipe(htmlmin({
            removeComments: true,
            collapseWhitespace: true,
            conservativeCollapse: true,
            removeScriptTypeAttributes: true
        }))
        .pipe(ngHtml2Js({
            template: "    $templateCache.put('<%= template.url %>',n        '<%= template.prettyEscapedContent %>');",
            prefix: 'tpl/'
        }))
        .pipe(concat(libName + '.tpls.js'))
        .pipe(tap(function(file, t) {
            file.contents = Buffer.concat([
                new Buffer("(function(module) {n" +
                "try {n" +
                "  module = angular.module('my.tpls');n" +
                "} catch (e) {n" +
                "  module = angular.module('my.tpls', []);n" +
                "}n" +
                "module.run(['$templateCache', function($templateCache) {n"),
                file.contents,
                new Buffer("n}]);n" +
                "})();n")
            ]);
        }))
        .pipe(gulp.dest(destDirectory));
});

相关内容

  • 没有找到相关文章

最新更新