2012-11-06 81 views
3

所以我現在正在使用我非常喜歡的Yeoman。我有一個任務是要抓住我的角色應用程序,並使其無服務器。基本上這意味着搶佔了所有的模板並將其插入到index.html文件與
yeoman構建過程

<script type="text/ng-template" id="dir to template"> ..template html goes here </script> 

現在自耕農都有自己gruntfile,我完全是一個福利局到咕嚕,所以我想知道如果
一)這應該是一個由grunt處理的任務?
b)我應該調整現有的grunt文件或創建一個新的?
c)在哪裏可以找到關於如何做到這一點的文檔的任何好主意?

謝謝!

回答

11

我們正在努力使約曼更容易定製,但在此期間,你可以通過在Gruntfile添加此覆蓋build任務:

grunt.renameTask('build', 'oldbuild'); 
grunt.registerTask('build', 'your-task oldbuild'); 

這將讓你添加你想要的任何任務建立過程。


如果您想進一步自定義您可以覆蓋build代替,只是拼湊你的任務自耕農想要什麼規定:usemin-handler rjs concat css min img rev usemin manifest html

例子:

grunt.registerTask('build', 'your-task rjs concat css whatever-you-want'); 
+0

是的,這是更有意義的,謝謝Sindre – climboid

0

目前,它是不可能定製自耕農構建過程。但是,您可以使用此解決方案。將以下代碼複製到自己的Gruntfile:

// Clobber the original targets 
var targets = { 
    // Add as many custom targets as you want, using custom modules, etc. 

    // Keep the existing targets 
    default : '    rjs concat css min img rev usemin manifest', 
    usemin : 'usemin-handler rjs concat css img rev usemin manifest', 
    text  : 'usemin-handler rjs concat css min  rev usemin manifest', 
    buildkit : 'usemin-handler rjs concat css min img rev usemin manifest html:buildkit', 
    basics : 'usemin-handler rjs concat css min img rev usemin manifest html:basics', 
    minify : 'usemin-handler rjs concat css min img rev usemin manifest html:compress', 
    test  : 'usemin-handler rjs concat css img rev usemin manifest', 

    yourbuild : 'intro clean mkdirs rjs' 
}; 

// If we clobber targets, we have to rebuild targetList, the below is copy paster from Yeoman.js 
var targetList = grunt.log.wordlist(Object.keys(targets)); 

// We also have to rebuild the build task with the new targetList 
grunt.registerTask('build', 'Run a predefined target - build:<target> \n' + targetList, function(target) { 
    var valid = Object.keys(targets); 
    target = target || 'usemin'; 

    if (valid.indexOf(target) === -1) { 
     grunt.log 
     .error('Not a valid target') 
     .error(grunt.helper('invalid targets', targets)); 
     return false; 
    } 

    var tasks = ['intro', 'clean coffee compass mkdirs', targets[target], 'copy time'].join(' '); 

    // Now overwrite the task for our costume build 
    if(target === 'yourbuild') { 
     tasks = targets[target]; 
    } 

    // Conditionally remove compass/manifest task if either compass or 
    // phantomjs binary is missing. Done only for `test` target (specifically 
    // used for our `npm test`). For each, output warning infos. 
    if(target === 'test') { 
     tasks = grunt.helper('build:skip', tasks, 'compass'); 
     tasks = grunt.helper('build:skip', tasks, 'phantomjs', 'manifest'); 
    } 

    grunt.log.subhead('Running ' + target + ' target') 
    .writeln(' - ' + grunt.log.wordlist(tasks.split(' '), { separator: ' ' })); 

    grunt.task.run(tasks); 
}); 

現在你可以更改以下行來定製自己的編譯過程:

yourbuild : 'intro clean mkdirs rjs' 

但請記住,此代碼是從自耕農複製來源,如果它更新,你必須自己做。

+0

哇這真棒。非常感謝netzzwerg,超級有用。 – climboid

+1

複製內部代碼並不是實現它的方式,並且在將來某個時候肯定會破壞您的代碼。我已經更新了我的答案,以反映您可以實現的另一種方式。 –