2014-09-29 45 views
2

我試圖獲得gruntfile連接/ uglify JavaScript文件在Laravel應用程序中工作。我的所有任務都是孤立的工作,但無論出於何種原因,輸入javascript文件的路徑都沒有正確設置。usemin使用錯誤的目錄輸入資產文件

這裏是我的刀模板中的一個例子:

@section('scripts') 
<!-- build:js /js/min/page.min.js --> 
<script type="text/javascript" src="/js/scrollIt.min.js"></script> 
<script type="text/javascript" src="/js/jquery.omniwindow.js"></script> 
<script type="text/javascript" src="/js/isotope.min.js"></script> 
<!-- endbuild --> 
@stop 

這裏是我的useminPrepare/usemin任務定義:

useminPrepare: { 
    html: 'app/views/**/*.blade.php', 
    options: { 
     dest: 'app/views/dist' 
    } 
}, 
usemin: { 
    options: { 
     assetDirs: [ 'public/js' ] 
    }, 
    html: [ 'app/views/dist/**/*.blade.php' ] 
}, 

我還沒有確定uglify任務,我只是依靠usemin將生成一個。

所有模板都正確地將其置於'app/views/dist'目錄中,並帶有正確的替換(在上面的示例中,模板中包含一個包含public/js/min/page.min.js的JavaScript文件)。在處理過程中,我注意到輸出:

$ grunt build 
Running "useminPrepare:html" (useminPrepare) task 
Going through {list of templates} to update the config 
Looking for build script HTML comment blocks 

Configuration is now: 

    concat: 
    { generated: 
    { files: 
     [ { dest: '.tmp/concat/js/min/page.min.js', 
      src: 
      [ 'app/views/course/js/scrollIt.min.js', 
      'app/views/course/js/jquery.omniwindow.js', 
      'app/views/course/js/isotope.min.js' ] }, 
     ] } } 

    uglify: 
    { generated: 
    { files: 
     [ { dest: 'app/views/dist/js/min/page.min.js', 
      src: [ '.tmp/concat/js/min/page.min.js' ] }, 
     ] } } 

    cssmin: 
    {} 

正如你可以在上面看到,它是在app/views/course/js目錄,這是不正確尋找我的JavaScript文件。爲什麼是這樣?我認爲在我的usemin任務中指定assetDirs: ['public/js']會告訴咕嚕在哪裏找到這些文件。我曾試圖改變腳本引用看起來像這樣:

<script type="text/javascript" src="../../../public/js/scrollIt.min.js"></script> 

,這將導致一個成功的構建,但打破我的地方發展,它絕對不是一個解決方案。我是否需要以某種方式覆蓋uglify:generated任務,如果是這樣,我如何爲具有生成文件名的多個不同模板執行此操作?

如果有必要,你可以看到我的整個Gruntfile.js here。你可以從那裏看到,我還必須添加一個新的copy任務,用於將app/views/dist/js/min的Javascript文件複製回public/js/min。我也想擺脫這一點,但如果我能解決這個問題,我會很高興。

回答

1

這裏其實答案竟然是比較簡單的,並能直接從usemin documentation聚集(只要我一開始看夠硬):

塊被表示爲:

​​

在我的情況與Laravel的工作,我需要指定的public/備用搜索路徑和它清盤工作得很好:

@section('scripts') 
<!-- build:js(public/) /js/min/script.min.js --> 
<script type="text/javascript" src="/js/script1.js"></script> 
<script type="text/javascript" src="/js/script2.js"></script> 
<script type="text/javascript" src="/js/script3.js"></script> 
<script type="text/javascript" src="/js/script4.js"></script> 
<!-- endbuid --> 
@stop