Browse Source

Grunt Build

tags/4.3
Stas Vilchik 10 years ago
parent
commit
a918f60815

+ 5
- 4
sonar-server/.gitignore View File

@@ -4,15 +4,16 @@ node/
# nodeJS dependencies
node_modules/

# build
src/main/webapp/build/

# generated css
src/main/webapp/stylesheets/
src/main/webapp/css/

# generated js
src/main/webapp/js/
src/main/webapp/javascripts/coding-rules/
src/main/webapp/javascripts/quality-gate/
src/main/webapp/javascripts/tests/common/
src/main/webapp/javascripts/tests/translateSpec.js

# js build
src/main/webapp/javascripts/build/


+ 131
- 2
sonar-server/Gruntfile.coffee View File

@@ -5,7 +5,7 @@ module.exports = (grunt) ->
less:
dev:
files:
'<%= pkg.assets %>stylesheets/sonar.css': [
'<%= pkg.assets %>css/sonar.css': [
'<%= pkg.assets %>less/yui-reset-font.less'
'<%= pkg.assets %>less/jquery-ui.less'
'<%= pkg.assets %>less/select2.less'
@@ -20,6 +20,26 @@ module.exports = (grunt) ->
'<%= pkg.assets %>less/navigator.less'
'<%= pkg.assets %>less/*.less'
]
build:
options:
cleancss: true
files:
'<%= pkg.assets %>build/css/sonar.css': [
'<%= pkg.assets %>less/yui-reset-font.less'
'<%= pkg.assets %>less/jquery-ui.less'
'<%= pkg.assets %>less/select2.less'
'<%= pkg.assets %>less/select2-sonar.less'
'<%= pkg.assets %>less/layout.less'
'<%= pkg.assets %>less/style.less'
'<%= pkg.assets %>less/icons.less'
'<%= pkg.assets %>less/ui.less'
'<%= pkg.assets %>less/sonar-colorizer.less'
'<%= pkg.assets %>less/dashboard.less'
'<%= pkg.assets %>less/select-list.less'
'<%= pkg.assets %>less/navigator.less'
'<%= pkg.assets %>less/*.less'
]


coffee:
dev:
@@ -32,6 +52,107 @@ module.exports = (grunt) ->
]


uglify:
dev:
options:
beautify: true
files:
'<%= pkg.assets %>js/sonar.js': [
'<%= pkg.assets %>javascripts/third-party/jquery.js'
'<%= pkg.assets %>javascripts/third-party/jquery-ui.js'
'<%= pkg.assets %>javascripts/third-party/d3.js'
'<%= pkg.assets %>javascripts/third-party/underscore.js'
'<%= pkg.assets %>javascripts/third-party/select2.js'
'<%= pkg.assets %>javascripts/select2-jquery-ui-fix.js'
'<%= pkg.assets %>javascripts/translate.js'
'<%= pkg.assets %>javascripts/widgets/widget.js'
'<%= pkg.assets %>javascripts/widgets/bubble-chart.js'
'<%= pkg.assets %>javascripts/widgets/timeline.js'
'<%= pkg.assets %>javascripts/widgets/stack-area.js'
'<%= pkg.assets %>javascripts/widgets/pie-chart.js'
'<%= pkg.assets %>javascripts/widgets/histogram.js'
'<%= pkg.assets %>javascripts/top-search.js'
'<%= pkg.assets %>javascripts/sortable.js'
'<%= pkg.assets %>javascripts/common/inputs.js'
'<%= pkg.assets %>javascripts/application.js'
'<%= pkg.assets %>javascripts/dashboard.js'
'<%= pkg.assets %>javascripts/duplication.js'
'<%= pkg.assets %>javascripts/resource.js'
'<%= pkg.assets %>javascripts/issue.js'
'<%= pkg.assets %>javascripts/recent-history.js'
]
build:
options:
preserveComments: false # remove all comments
files:
'<%= pkg.assets %>build/js/sonar.js': [
'<%= pkg.assets %>javascripts/third-party/jquery.js'
'<%= pkg.assets %>javascripts/third-party/jquery-ui.js'
'<%= pkg.assets %>javascripts/third-party/d3.js'
'<%= pkg.assets %>javascripts/third-party/underscore.js'
'<%= pkg.assets %>javascripts/third-party/select2.js'
'<%= pkg.assets %>javascripts/select2-jquery-ui-fix.js'
'<%= pkg.assets %>javascripts/translate.js'
'<%= pkg.assets %>javascripts/widgets/widget.js'
'<%= pkg.assets %>javascripts/widgets/bubble-chart.js'
'<%= pkg.assets %>javascripts/widgets/timeline.js'
'<%= pkg.assets %>javascripts/widgets/stack-area.js'
'<%= pkg.assets %>javascripts/widgets/pie-chart.js'
'<%= pkg.assets %>javascripts/widgets/histogram.js'
'<%= pkg.assets %>javascripts/top-search.js'
'<%= pkg.assets %>javascripts/sortable.js'
'<%= pkg.assets %>javascripts/common/inputs.js'
'<%= pkg.assets %>javascripts/application.js'
'<%= pkg.assets %>javascripts/dashboard.js'
'<%= pkg.assets %>javascripts/duplication.js'
'<%= pkg.assets %>javascripts/resource.js'
'<%= pkg.assets %>javascripts/issue.js'
'<%= pkg.assets %>javascripts/recent-history.js'
]


requirejs:
options:
baseUrl: '<%= pkg.assets %>javascripts'

paths:
'backbone': 'third-party/backbone'
'backbone.marionette': 'third-party/backbone.marionette'
'handlebars': 'third-party/handlebars'
'moment': 'third-party/moment'
'select-list': 'common/select-list'
'jquery.mockjax': 'third-party/jquery.mockjax'

shim:
'backbone.marionette':
deps: ['backbone']
exports: 'Marionette'
'backbone': exports: 'Backbone'
'handlebars': exports: 'Handlebars'
'moment': exports: 'moment'
'select-list': exports: 'SelectList'

qualityGate: options:
name: 'quality-gate/app'
out: '<%= pkg.assets %>build/js/quality-gate/app.js'

codingRules: options:
name: 'coding-rules/app'
out: '<%= pkg.assets %>build/js/coding-rules/app.js'

issues: options:
name: 'issues/app'
out: '<%= pkg.assets %>build/js/issues/app.js'

measures: options:
name: 'measures/app'
out: '<%= pkg.assets %>build/js/measures/app.js'

selectList: options:
name: 'common/select-list'
out: '<%= pkg.assets %>build/js/common/select-list.js'


watch:
options:
spawn: false
@@ -44,12 +165,20 @@ module.exports = (grunt) ->
files: '<%= pkg.assets %>coffee/**/*.coffee'
tasks: ['coffee:dev']

uglify:
files: '<%= pkg.assets %>javascripts/**/*.js'
tasks: ['uglify:dev']



# Load grunt-contrib-* plugins
grunt.loadNpmTasks 'grunt-contrib-less'
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-uglify'
grunt.loadNpmTasks 'grunt-contrib-requirejs'
grunt.loadNpmTasks 'grunt-contrib-watch'


# Define tasks
grunt.registerTask 'default', ['less:dev', 'coffee:dev']
grunt.registerTask 'default', ['less:dev', 'coffee:dev', 'uglify:dev']
grunt.registerTask 'build', ['less:build', 'coffee:dev', 'uglify:build', 'requirejs']

+ 4
- 2
sonar-server/package.json View File

@@ -12,8 +12,10 @@
"grunt-contrib-less": "~0.10.0",
"grunt-contrib-coffee": "~0.10.1",
"grunt-contrib-handlebars": "~0.7.0",
"grunt-contrib-requirejs": "~0.4.3",
"grunt-contrib-watch": "~0.5.3"
"grunt-contrib-requirejs": "^0.4.3",
"grunt-contrib-watch": "~0.5.3",
"grunt-contrib-uglify": "^0.4.0"

},
"engines": {
"node": "~0.8 || ~0.10"

+ 7
- 34
sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_head.html.erb View File

@@ -18,42 +18,15 @@
end
%>
<title><%= title -%></title>
<%= stylesheet_link_tag 'sonar', :media => 'all' -%>
<%= yield :style -%>

<% if ENV['RAILS_ENV'] == 'production' %>
<%= javascript_include_tag 'sonar' -%>
<% else %>
<%= javascript_include_tag 'third-party/jquery' %>
<%= javascript_include_tag 'third-party/jquery-ui' %>
<%= javascript_include_tag 'third-party/d3' %>
<%= javascript_include_tag 'third-party/underscore' %>
<%= javascript_include_tag 'third-party/select2' %>
<%= javascript_include_tag 'select2-jquery-ui-fix' %>

<%= javascript_include_tag 'translate' %>

<%= javascript_include_tag 'widgets/widget' %>
<%= javascript_include_tag 'widgets/bubble-chart' %>
<%= javascript_include_tag 'widgets/timeline' %>
<%= javascript_include_tag 'widgets/stack-area' %>
<%= javascript_include_tag 'widgets/pie-chart' %>
<%= javascript_include_tag 'widgets/histogram' %>

<%= javascript_include_tag 'top-search' %>
<%= javascript_include_tag 'sortable' %>
<%= javascript_include_tag 'common/inputs' %>
<link href="<%= ApplicationController.root_context -%>/css/sonar.css" rel="stylesheet" media="all">
<%= yield :style -%>

<%= javascript_include_tag 'application' %>
<%= javascript_include_tag 'dashboard' %>
<%= javascript_include_tag 'duplication' %>
<%= javascript_include_tag 'resource' %>
<%= javascript_include_tag 'issue' %>
<%= javascript_include_tag 'recent-history' %>
<% end %>
<script>var baseUrl = '<%= ApplicationController.root_context -%>';
var $j = jQuery.noConflict();
$j(document).ready(function () {$j('.open-modal').modal()});
<script src="<%= ApplicationController.root_context -%>/js/sonar.js"></script>
<script>
var baseUrl = '<%= ApplicationController.root_context -%>';
var $j = jQuery.noConflict();
$j(document).ready(function () {$j('.open-modal').modal()});
</script>
<%= yield :script -%>
</head>

+ 2
- 1
sonar-server/src/main/webapp/javascripts/build.js View File

@@ -1,8 +1,9 @@
({
appDir: '.',
baseUrl: '.',
dir: 'DEFINED IN POM.XML',
dir: 'build',
preserveLicenseComments: false,
skipDirOptimize: true,

modules: [
{ name: 'quality-gate/app' },

sonar-server/src/main/webapp/stylesheets/sonar-colorizer.less → sonar-server/src/main/webapp/less/sonar-colorizer.less View File


Loading…
Cancel
Save