偉大的問題。我的團隊也遇到了這些問題。你想要熟悉的是Grunt.js對象表示法。你可以做這樣的事情:
thetask: {
dev: {
src: [
['build/_compile','build/development/**']
]
},
prod: {
src: [
['build/_compile','build/production/**']
]
},
},
grunt.registerTask('package:dev',['thetask:dev']);
grunt.registerTask('package:prod',['thetast:prod']);
~# grunt package:dev
「隨着angularjs恰巧主頁需要包括很多js文件,其中大部分是應用特定的,我們打算在js文件在邏輯上劃分應用程序。」
看看grunt-html-build。您可以動態包括根據規則,你的呼嚕聲文件,這樣的文件:
htmlbuild: {
dev: {
src: 'app/index.html',
dest: 'build/development',
options: {
styles: {
bundle: [
'build/development/css/app.css',
]
},
scripts: {
bundle: [
// Bundle order can be acheived with globbing patterns.
// See: https://github.com/gruntjs/grunt/wiki/Configuring-tasks#globbing-patterns
'build/development/js/angular.js',
'build/development/js/angular-resource.js',
'build/development/js/nginfinitescroll.js',
'build/development/js/*.js',
]
},
}
},
prod: {
src: 'app/index.html',
dest: 'build/production',
options: {
styles: {
bundle: [
'build/production/css/app.css',
]
},
scripts: {
bundle: [
'build/production/js/app.js',
]
},
}
},
},
,然後在指數:
<!doctype html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Playground 3</title>
<!-- build:style bundle -->
<!-- /build -->
</head>
<body>
<div ng-include src="'/views/global.navbar.html'"></div>
<div ng-view class="container"></div>
<div ng-include src="'/views/global.footer.html'"></div>
<!-- build:script bundle -->
<!-- /build -->
</body>
</html>
「此外,我們應該在開發過程中使用微小,可以這樣推到部署之前的階段或類似的階段,所以在開發過程中,我們使用未記錄的js文件,但是爲了生產版本而縮小它們?「
將只是另一個任務選擇您的構建,包括:
grunt.registerTask('package:dev',['thetask:dev']);
grunt.registerTask('package:prod',['thetast:prod','concat:prod','minify:prod']);
感謝看起來我們需要什麼,從Java的背景,這是非常相似的Maven構建可用的配置文件來了,肯定會看看 – Sudarshan
我真的很喜歡這個咕task任務的實現。爲什麼在每個dev/prod任務下定義'bundle'?有什麼理由不能只使用'樣式:[a.js,b.js,c.js]'? – Clev3r
@Clever我只是把它扔在一起作爲一個例子。我想我試圖做的一點是,對於你的「發佈」版本,你將運行比你的「開發」版本更多/不同的任務。在上面的例子中,「生產」包假定所有的JS文件和所有的CSS文件都是先進行連接/縮小的。 –