module.exports = function(grunt){
//grunt的配置我就不叨叨了 本身看官網就ok了
//我就介紹下grunt的依賴插件grunt-contrib-requirejs
//專門打包requeirjs項目的
grunt.initConfig({
//此處的requirejs的配置和requeirjs.config要區分開,那個是requeirjs項目加載配置
//這個是 grunt-contrib-requirejs打包配置
requirejs: {
build: {
options: {
//此處是文件Gruntfile的相對位置
appDir: './js',
//設置默認路徑 ./app/js
baseUrl : 'source/modules/app',
//設置壓縮後的路徑 ./build
dir: './js/build',
// optimize: "uglify",
// // 使用 UglifyJS 時的可配置參數
// // See https://github.com/mishoo/UglifyJS for the possible values.
// uglify: {
// toplevel: true,
// ascii_only: true,
// beautify: true,
// max_line_length: 1000
// },
// 是否開啓嚴格模式
// 因爲不少瀏覽器不支持 ES5 的嚴格模式,故此配置默認值爲 false
useStrict: false,
// 處理級聯依賴,默認爲 false,此時可以在運行時動態 require 級聯的模塊。爲 true 時,級聯模塊會被一同打包
findNestedDependencies: true,
//這裏paths 是被打包文件所須要的依賴文件以及被打包的文件
/*
./app/js/main.js下的代碼
requirejs([
'angular',
'jquery',
'app'
], function (angular, $, app) {
......
})
*/
//須要三個angular jquery app
//那麼 其餘的呢? 其餘的模塊會按照依賴關係也被打包進去
//好比 app須要 ./app/js/controller/myCon.js grunt就自動把他打包進去了
//咱們只管 被打包的文件和此文件requirejs()函數加載的依賴 ....樓主好囉嗦
paths: {
"jquery": "../../lib/jquery",
"tipMod": "../public/tipMod",
"ajax":"../public/ajax",
"echart":"../../lib/echart/build/dist/echarts",
"myEchart.extend":"../public/myEchart.extend"
},
shim:{
'myEchart.extend':['jquery',"echart"]
},
//requiejs.config裏面配置了依賴關係和全局變量那爲何這還須要配置
//由於 打包後代碼的變量將被替換隻有a b c d相似簡單的變量了
//那 angularjs自定義模塊(好比myCon.js)就報undefined了
//此處配置了,打包後就不報錯了,grunt-contrib-requirejs給在中間轉了一下
// shim: {
// angular : {
// deps : ['jquery'],
// exports : 'angular'
// },
// jquery : {
// exports : '$'
// }
// },
//此處的modules就是要打包的文件(模塊)
//咱們例子項目由於經過main.js就把整個項目模塊 關聯了起來
//main ->angular+jquery+app ->myCon->mySer
//因此我只打包main.js grunt就自動把其餘依賴文件按依賴關係(順序)打包進去
modules: [{
name: 'addInterface',
exclude:['jquery']//打包時去掉一些不想包含進入的文件
},
{
name: 'addService'
},{
name: 'applyService'
},{
name: 'editInterface'
},{
name: 'interfaceList'
},{
name: 'messageService'
},{
name: 'moreService'
},{
name: 'serviceInfo'
}]
}
}
},
});
grunt.loadNpmTasks('grunt-contrib-requirejs');
grunt.registerTask('build', ['requirejs']);
}jquery