所以,我正从咕哝变成吞咽(或者无论如何都要尝试),而且我很难像我在咕哝中做的那样吞咽。特别是$templateCache的东西。
我的角度应用程序被分解成几个组件/模块。每个模块包含运行所需的一切(控制器、指令、部分、scss等)。
使用Grunt,我可以将每个模块归纳为5个文件:
这已经工作了两年,并成为我的模块化架构的基石。我试一试的唯一原因是好奇,2)我的咕噜文件变得有点毛茸茸的,因为我们添加了部署和环境特定的东西,到目前为止,gulp已经把它压缩了下来。
在大多数情况下,我已经知道如何在gulp中完成我所有的任务,但是我很难弄清楚如何为每个模块生成一个模板缓存文件。所有的吞咽,ng,角形模板,\\templatecache插件,我所有的部分,并创建一个文件。我想把我的所有文件都放在模块/partials/*..html下面,并创建一个module.tpls.min.js,并对每个模块执行该操作。
这实际上也是咕噜的一个问题,但我在grunt.file.expand().forEach()中发现了这样的问题:
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);
});
});我现在对同样的任务一饮而尽:
var compileTemplates = gulp.src('./src/js/modules/**/partials/*.html', {base:'.'})
.pipe(ngTemplates())
.pipe(gulp.dest('.'));我只是认真考虑过这些选择,但似乎都没有做我想做的事。它们都是围绕着更改文件名、文件的最终目的地、模块名称或其他什么的;没有提到任何关于为它碰巧位于的目录进行操作的任何内容。
我考虑过使用gulp,因为它在做CSS编译时对我很有用:
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()路径时,它拥有它找到的所有文件的所有路径(很多日志条目)。
有什么想法吗?谢谢!
发布于 2015-05-20 03:14:25
每当我为gulp任务处理scss/sass时,我只会将一个scss文件作为源参数。此参数文件由导入列表组成。这样,您就不需要依赖gulp来连接scss文件内容。
//in gulpfile
gulp.src('./src/js/modules/**/scss/main.scss', {base:'.'})
//in main.scss
@import 'a', 'b', 'c';a、b和c代表其他scss文件。
https://stackoverflow.com/questions/30339591
复制相似问题