首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Gulp创建每个模块/目录的角度$templateCache

使用Gulp创建每个模块/目录的角度$templateCache
EN

Stack Overflow用户
提问于 2015-05-20 03:06:20
回答 2查看 2K关注 0票数 2

所以,我正从咕哝变成吞咽(或者无论如何都要尝试),而且我很难像我在咕哝中做的那样吞咽。特别是$templateCache的东西。

我的角度应用程序被分解成几个组件/模块。每个模块包含运行所需的一切(控制器、指令、部分、scss等)。

使用Grunt,我可以将每个模块归纳为5个文件:

  • 编译并连接module.min.css //所有模块scss文件
  • module.min.js //所有模块控制器、指令、服务等连接在一起
  • module.tpls.min.js //此模块的$templateCache中的所有部分
  • module.mocks.min.js //此模块的所有单元测试模拟对象
  • module.specs.min.js //此模块的所有单元测试规范

这已经工作了两年,并成为我的模块化架构的基石。我试一试的唯一原因是好奇,2)我的咕噜文件变得有点毛茸茸的,因为我们添加了部署和环境特定的东西,到目前为止,gulp已经把它压缩了下来。

在大多数情况下,我已经知道如何在gulp中完成我所有的任务,但是我很难弄清楚如何为每个模块生成一个模板缓存文件。所有的吞咽,ng,角形模板,\\templatecache插件,我所有的部分,并创建一个文件。我想把我的所有文件都放在模块/partials/*..html下面,并创建一个module.tpls.min.js,并对每个模块执行该操作。

这实际上也是咕噜的一个问题,但我在grunt.file.expand().forEach()中发现了这样的问题:

代码语言:javascript
运行
复制
grunt.registerTask('prepModules', '...', function(){

    // loop through our modules directory and create subtasks
    // for each module, modifying tasks that affect modules.
    grunt.file.expand("src/js/modules/*").forEach(function (dir) {

        // get the module name by looking at the directory we're in
        var mName = dir.substr(dir.lastIndexOf('/') + 1);

        // add ngtemplate subtasks for each module, turning
        // all module partials into $templateCache objects
        ngtemplates[mName] = {
            module: mName,
            src: dir + "/partials/**/*.html",
            dest: 'dev/modules/' + mName + '/' + mName + '.tpls.min.js'
        };
        grunt.config.set('ngtemplates', ngtemplates);

    });

});

我现在对同样的任务一饮而尽:

代码语言:javascript
运行
复制
var compileTemplates = gulp.src('./src/js/modules/**/partials/*.html', {base:'.'})
    .pipe(ngTemplates())
    .pipe(gulp.dest('.'));

我只是认真考虑过这些选择,但似乎都没有做我想做的事。它们都是围绕着更改文件名、文件的最终目的地、模块名称或其他什么的;没有提到任何关于为它碰巧位于的目录进行操作的任何内容。

我考虑过使用gulp,因为它在做CSS编译时对我很有用:

代码语言:javascript
运行
复制
var compileScss = gulp.src('./src/js/modules/**/scss/*.scss', {base:'.'})
    .pipe(sass({includePaths: ['./src/scss']}))
    .pipe(rename(function(path){
        path.dirname = path.dirname.replace(/scss/,'css');
    }))
    .pipe(gulp.dest('.'));

但是,当我在执行ngTemplates()之后使用管道rename()时,它只有最终输出文件的路径(一个日志条目)。当您在sass()之后使用console.log()路径时,它拥有它找到的所有文件的所有路径(很多日志条目)。

有什么想法吗?谢谢!

EN

Stack Overflow用户

发布于 2015-05-20 03:14:25

每当我为gulp任务处理scss/sass时,我只会将一个scss文件作为源参数。此参数文件由导入列表组成。这样,您就不需要依赖gulp来连接scss文件内容。

代码语言:javascript
运行
复制
 //in gulpfile
 gulp.src('./src/js/modules/**/scss/main.scss', {base:'.'})

 //in main.scss
 @import 'a', 'b', 'c';

a、b和c代表其他scss文件。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30339591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档