2013-04-01 23 views
4

我想在我的項目中使用自耕農,和我面臨的一個問題,而試圖用步兵來構建它:建造第二個JavaScript文件與約曼

我有一個的application.js這是主要的文件使用的應用程序,使用require.js。運行Grunt構建後,js文件將在dist文件夾中創建,並連接並縮小。

問題是當我嘗試創建第二個JavaScript文件(例如application2.js)在應用程序中的另一個頁面中使用。在運行Grunt之後,文件被創建但是是空的。我嘗試使用與在工作中一樣的js來排除一些js或require.js問題,但它們是相同的。

我可以計算唯一的事情就是介於咕嚕被配置爲只處理文件,實際運行時,我可以在控制檯中看到以下內容:

Found a block: 
    <!-- build:js scripts/application.js --> 
    <script data-main="scripts/application" src="components/requirejs/require.js"></script> 
    <!-- endbuild --> 
Updating config with the following assets: 
    - dist/scripts/application.js 

Found a block: 
    <!-- build:js scripts/application2.js --> 
    <script data-main="scripts/application2" src="components/requirejs/require.js"></script> 
    <!-- endbuild --> 
Updating config with the following assets: 
    - dist/scripts/application2.js 

Configuration is now: 

    cssmin: 
    { dist: {} } 

    concat: 
    { 'dist/scripts/application.js': [ 'dist/scripts/application.js' ], 
    'dist/scripts/vendor/modernizr.js': [ 'app/components/modernizr/modernizr.js' ], 
    'dist/scripts/application2.js': [ 'dist/scripts/application2.js' ] } 

    uglify: 
    { 'dist/scripts/application.js': 'dist/scripts/application.js', 
    'dist/components/requirejs/require.js': 'app/components/requirejs/require.js', 
    'dist/scripts/vendor/modernizr.js': 'dist/scripts/vendor/modernizr.js', 
    'dist/scripts/application2.js': 'dist/scripts/application2.js' } 

    requirejs: 
    { dist: 
    { options: 
     { baseUrl: 'app/scripts', 
     optimize: 'none', 
     preserveLicenseComments: false, 
     useStrict: true, 
     wrap: true, 
     uglify2: {}, 
     name: 'application', 
     out: 'dist/scripts/application.js', 
     mainConfigFile: 'app/scripts/application.js' } } } 

Running "requirejs:dist" (requirejs) task 
>> RequireJS optimizer finished 
Uncompressed size: 1361156 bytes. 
Compressed size: 304370 bytes gzipped. 

的毗連和醜化任務指的是第二javascript文件,但requirejs。我試圖改變屬性「mainConfigFile」,以包括兩個,但它不斷被越來越多...

任何想法??

回答

5

我第一次好奇你爲什麼試圖在yeoman系統中定義多個應用程序文件?這是爲了多個HTML頁面,我猜?或者你有兩個:

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

在一個單一的HTML文件?

只要修復了這個問題:mainConfigFile是使用'out'參數生成的,所以設置它在這裏不起作用。

您的requirejs部分需要每個文件的'dist'部分。他們也需要手動命名和輸出。不知道這是一個錯誤還是想要的行爲。

requirejs: { 
    dist1: { 
     options: { 
     name: 'application', out: 'dist/scripts/application.js', 
     ...} 
    }, 
    dist2: { 
     options: { 
     name: 'application2', out: 'dist/scripts/application2.js', 
     ... 

您還需要兩個獨立的HTML文件添加到useminPrepare,但它看起來像你已經做了,否則,你所引用內的一個HTML文件(不知道應用程序和應用2哪兩個requirejs CONFIGS的後果在一個HTML文件將是)。

useminPrepare: { 
     html: ['<%= yeoman.app %>/index.html','<%= yeoman.app %>/index2.html'], 
     options: { 
      dest: '<%= yeoman.dist %>' 
     } 
    }, 

對於後人,我還添加了兩個腳本來鮑爾配置,但我不能100%肯定它甚至事項:

bower: { 
     all: { 
      rjsConfig: ['<%= yeoman.app %>/scripts/application.js','<%= yeoman.app %>/scripts/application2.js'] 
     } 
    } 

這是我得到的配置輸出:http://pastie.org/7321492

+2

這就像一個魅力!我很困惑,因爲沒有看到yeoman如此專注於單頁應用的任何地方。我甚至不知道第一個js「application.js」是由Yeoman在Grunt中定義的,因爲偶然我也叫我的主要js文件「application.js」 – jasalguero

+0

我也很驚訝,yeoman的主要用途是構建單頁應用程序。但你的解決方案已經完美運作。 – silentser