2013-10-03 71 views
2

我正在開發基於神奇的webapp生成器的yeoman生成器,但處理一些不同的東西。我想要實現的一件事是將require.js文件作爲一個文件。這意味着不是這個......通過Grunt替換require.js腳本標記

<script data-main="scripts/main" src="bower_components/requirejs/require.js"></script> 

...我想有這樣的:

<script scr="scripts/main"></script> 

從require.js,這與幾乎沒有努力工作。

require.config({ 
    paths: { 
     // ... 
     requireLib: '../bower_components/requirejs/require' 
    } 
}); 

require(['...', 'requireLib'], function (..., requireLib) { 
    // ... 
}); 

我困在Gruntfile.js部分。修改腳本標記的最佳方法是什麼?將src和data-main的新值作爲data-main的值刪除?

+0

你的Gruntfile中正在進行什麼? – dezman

+0

它主要是文件'喲webapp'會寫一些微小的修改,請看這裏:[The Gist](https://gist.github.com/sontags/6813239)...'build'任務應該做標籤糖化工作在最後... – sontags

回答

0

自己解決了這個問題。去咕嚕正則表達式替換:

​​

而且在Gruntfile.js做到這一點:

module.exports = function (grunt) { 
    // ... 
    require('load-grunt-tasks')(grunt); 

    grunt.initConfig({ 
     // ... 
     'regex-replace': { 
      dist: { 
       src: ['<%= yeoman.dist %>/index.html'], 
       actions: [ 
        { 
         name: 'requirejs-onefile', 
         search: '<script data-main=".*" src="bower_components/requirejs/require.js"></script>', 
         replace: function(match){ 
          var regex = /scripts\/.*main/; 
          var result = regex.exec(match); 
          return '<script src="' + result[0] + '.js"></script>'; 
         }, 
         flags: 'g' 
        } 
       ] 
      } 
     } 
    }); 
} 

運行此...

grunt regex-replace 

...和你做。這樣做的工作很好...

乾杯

+0

很高興找到這個!在使用喲webapp開始一個項目後,我被困在同一步驟。有了我發現的所有問題,我不確定發電機是否準備好迎接黃金時段。無論如何,這不適合我,因爲uglify和rev任務正在將main.js重命名爲[random prefix] .main.min.js之類的東西,所以它不會被腳本拾取。如果我能弄清楚如何獲得輸出文件的名稱,我可以修改它 - 我知道路徑,並且在我的配置中只有一個.js文件,所以我想我可以搜索它,但看起來很脆弱。 –