2013-06-20 55 views
2

的Javascript包管理所以在我的項目我的javascript的有涼亭和咕嚕

  • 第三方庫(jQuery的,引導,jQuery插件等)
  • 自定義庫包含在HTML
  • 代碼嵌入在線in <script>$(function(){});</script>

漂亮的標準東西。

我的目標是找到一種可靠的自動化方法,將我所有單獨的JavaScript文件(約25個文件)縮小爲一個文件進行生產。

我已經安裝了bower,它似乎是讓我的外部庫保持最新的好方法。我也安裝了grunt。我在grunt中使用了一個bower插件,將所有下載的文件複製到一個指定的目錄,然後concat可以在該目錄中查找來合併它們,最後uglifyJS將文件縮小。再次,它似乎是一個標準的咕嚕聲設置。

的涼亭插件將創建一個像

文件夾
vendorjs 

- bootstrap.js 
- jquery.js 
- etc 

concat然後從這個目錄讀取,而作爲文件是按字母順序將jQuery的之前不正確的順序將它們結合起來,引導,所以它不會有用。

我知道RequireJS,但它似乎是爲了我的需要矯枉過正。而且似乎我需要重寫所有的js以符合RequireJS的要求。

是否有一些配置我錯過了,這將有助於我的問題?我是否以錯誤的方式解決了這個問題?


編輯這是我更清晰Gruntfile.js。

grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    bower: { 
     dev: { 
      dest: 'vendorjs', 
      options: { 
       stripJsAffix: true 
      } 
     } 
    } 
    concat: { 
     options: { 
      separator: ';' 
     }, 
     dist: { 
      src: ['vendorjs/*.js'], 
      dest: 'vendor.js' 
     } 
    }, 
    uglify: { 
     dist: { 
      files: { 
       '../../public/js/admin/vendor.min.js': ['vendor.js'] 
      } 
     } 
    } 
}); 

};

回答

2

我不知道你的配置是什麼樣子,但是你可以很容易地指定咕嚕-的contrib-CONCAT文件的順序:

grunt.initConfig({ 
    concat: { 
    dist: { 
     src: ['src/jquery.js', 'src/bootstrap.js'], 
     dest: 'dist/built.js' 
    } 
    } 
}); 
+0

感謝您的回覆,問題是,我試圖自動執行一切,因此任何依賴關係都會自動處理,所以我不想指定確切的文件。但這可能是錯誤的方法。 – JasonM

+3

你不能雙方都有。要麼你指定要麼你不指定(這會導致字母順序)。聽起來像RequireJS是你正在尋找的東西,但它有它自己的缺點。 –

+1

是的,這是一種感覺,我正在走向死衚衕,非常感謝您在澄清情況方面的幫助。 – JasonM