Skip to content
This repository was archived by the owner on Jun 14, 2019. It is now read-only.

Commit 3972b9c

Browse files
committed
chore(*): Migration CoffeeScript to ES6/BabelJS #50
* No more CoffeeScript, welcome BabelJS (ES6) * Using ES6 native module pattern, building artifact with browserify (ditching UMD again, because it is now CJS compatible) * Eliminating `tmp/` because of using source files directly in Karma tests (using browserify/babelify on demand preprocessors) * Add Source Maps
1 parent 92f919e commit 3972b9c

27 files changed

+1057
-679
lines changed

Gruntfile.js

Lines changed: 144 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ module.exports = function (grunt) {
66
require('load-grunt-tasks')(grunt);
77
var _ = require('lodash');
88

9-
var karmaConfig = function(configFile, customOptions) {
10-
var options = { configFile: configFile, keepalive: true };
11-
var travisOptions = process.env.TRAVIS && { browsers: ['Firefox'], reporters: 'dots' };
9+
var karmaConfig = function (configFile, customOptions) {
10+
var options = {configFile : configFile, keepalive : true};
11+
var travisOptions = process.env.TRAVIS && {browsers : ['Firefox'], reporters : 'dots'};
1212
return _.extend(options, customOptions, travisOptions);
1313
};
1414

1515
// Returns configuration for bower-install plugin
1616
var loadTestScopeConfigurations = function () {
1717
var scopes = fs.readdirSync('./test_scopes').filter(function (filename) {
18-
return filename[0] !== '.';
18+
return typeof filename === 'string' && filename[0] !== '.';
1919
});
2020
var config = {
2121
options : {
@@ -25,149 +25,175 @@ module.exports = function (grunt) {
2525
};
2626
// Create a sub config for each test scope
2727
for (var idx in scopes) {
28-
var scope = scopes[idx];
29-
config['test_scopes_' + scope] = {
30-
options : {
31-
cwd : 'test_scopes/' + scope,
32-
production : false
33-
}
34-
};
28+
if (scopes.hasOwnProperty(idx)) {
29+
var scope = scopes[idx];
30+
config['test_scopes_' + scope] = {
31+
options : {
32+
cwd : 'test_scopes/' + scope,
33+
production : false
34+
}
35+
};
36+
}
3537
}
36-
return config;
38+
return config;
3739
};
3840

3941
grunt.initConfig({
40-
pkg: grunt.file.readJSON('bower.json'),
41-
meta: {
42-
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
43-
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
44-
'<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' +
45-
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
46-
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */'
42+
pkg : grunt.file.readJSON('package.json'),
43+
meta : {
44+
banner : '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
45+
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
46+
'<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
47+
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
48+
' Licensed <%= _.pluck(pkg.licenses, "name").join(", ") %> */'
4749
},
48-
clean: {
49-
dist: 'dist/',
50-
temp: 'temp/'
50+
clean : {
51+
dist : 'dist/',
52+
temp : 'temp/'
5153
},
52-
watch: {
53-
'coffee-src': {
54-
files: ['src/**/*.coffee'],
55-
tasks: ['coffee:src']
56-
},
57-
'coffee-test': {
58-
files: ['test/**/*.coffee'],
59-
tasks: ['coffee:test']
60-
},
61-
scripts: {
62-
files: ['Gruntfile.js', 'temp/**/*.js', 'test/**/*.js'],
63-
tasks: ['jshint', 'karma:unit']
64-
}
65-
},
66-
jshint: {
67-
all: ['Gruntfile.js', 'src/**/*.js', 'test/unit/*.js'],
68-
options: {
69-
eqeqeq: true,
70-
globals: {
71-
angular: true
54+
jshint : {
55+
all : ['Gruntfile.js', 'test/unit/*.js', 'src/**/*.js'],
56+
options : {
57+
esnext: true,
58+
eqeqeq : true,
59+
globals : {
60+
angular : true
7261
}
7362
}
7463
},
75-
coffee: {
76-
src: {
77-
options: {
78-
join: true
64+
coffee : {
65+
test : {
66+
options : {
67+
bare : true
7968
},
80-
files: {
81-
'temp/src/angular-vertxbus-adapter.js': [
82-
'src/module.coffee', 'src/wrapper.coffee', 'src/service.coffee'
83-
]
84-
}
69+
expand : true,
70+
cwd : 'test/',
71+
src : ['unit/**/*.coffee'],
72+
dest : 'temp/test/',
73+
ext : '.js'
74+
}
75+
},
76+
babel : {
77+
options : {
78+
sourceMap : false
8579
},
86-
test: {
87-
options: {
88-
bare: true
89-
},
90-
expand: true,
91-
cwd: 'test/',
92-
src: ['unit/**/*.coffee'],
93-
dest: 'temp/test/',
94-
ext: '.js'
80+
src : {
81+
expand : true,
82+
cwd : 'src/',
83+
src : ['**/*.js'],
84+
dest : 'temp/',
85+
ext : '.js'
9586
}
9687
},
97-
concat: {
98-
src: {
99-
options: {
100-
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
101-
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
102-
'<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
103-
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
104-
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n'
105-
},
106-
src: ['temp/src/**/*.js'],
107-
dest: 'dist/angular-vertxbus.js'
88+
karma : {
89+
unit : {
90+
options : karmaConfig('karma.conf.js', {
91+
singleRun : true
92+
})
10893
},
109-
lib: {
94+
headless : {
95+
options : karmaConfig('karma.conf.js', {
96+
singleRun : true,
97+
browsers : ['PhantomJS']
98+
})
99+
},
100+
server : {
101+
options : karmaConfig('karma.conf.js', {
102+
singleRun : false
103+
})
104+
}
105+
},
106+
watch : {
107+
'test' : {
108+
files : ['test/**/*.coffee'],
109+
tasks : ['coffee:test']
110+
},
111+
scripts : {
112+
files : ['Gruntfile.js', 'temp/**/*.js', 'test/**/*.js'],
113+
tasks : ['karma:unit']
114+
}
115+
},
116+
browserify: {
117+
dist : {
110118
options: {
111-
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
112-
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
113-
'<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
114-
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
115-
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n'
119+
browserifyOptions: {
120+
fullPaths: false,
121+
debug: true
122+
},
123+
transform: ['babelify', require('browserify-ngannotate')],
124+
banner : '<%= meta.banner %>',
125+
watch: true
116126
},
117-
src: [
118-
'build-data-for-requirejs/angular-vertxbus_start.txt',
119-
'temp/src/**/*.js',
120-
'build-data-for-requirejs/angular-vertxbus_end.txt'
121-
],
122-
dest: 'dist/requirejs/angular-vertxbus.js'
127+
files : {
128+
'dist/angular-vertxbus.js' : [
129+
'src/index.js'
130+
]
131+
}
123132
}
124133
},
125-
uglify: {
126-
src: {
134+
extract_sourcemap: {
135+
dist: {
127136
files: {
128-
'dist/angular-vertxbus.min.js': '<%= concat.src.dest %>'
137+
'dist': ['dist/angular-vertxbus.js']
129138
}
130139
}
131140
},
132-
karma: {
133-
unit: {
134-
options: karmaConfig('karma.conf.js', {
135-
singleRun: true
136-
})
141+
uglify : {
142+
options : {
143+
preserveComments : 'some',
144+
sourceMap: true,
145+
sourceMapIn: 'dist/angular-vertxbus.js.map'
137146
},
138-
server: {
139-
options: karmaConfig('karma.conf.js', {
140-
singleRun: false
141-
})
142-
}
143-
},
144-
changelog: {
145-
options: {
146-
dest: 'CHANGELOG.md'
147+
dist : {
148+
files : {
149+
'dist/angular-vertxbus.min.js' : 'dist/angular-vertxbus.js'
150+
}
147151
}
148152
},
149-
ngAnnotate: {
150-
options: {
151-
singleQuotes: true
152-
},
153-
src: {
154-
src: '<%= concat.src.dest %>',
155-
dest: '<%= concat.src.dest %>'
156-
},
157-
lib: {
158-
src: '<%= concat.lib.dest %>',
159-
dest: '<%= concat.lib.dest %>'
153+
changelog : {
154+
options : {
155+
dest : 'CHANGELOG.md'
160156
}
161157
},
162158

163-
'bower-install-simple': loadTestScopeConfigurations()
159+
'bower-install-simple' : loadTestScopeConfigurations()
164160

165161
});
166162

167-
grunt.registerTask('default', ['clean:temp', 'coffee', 'jshint', 'karma:unit']);
168-
grunt.registerTask('test', ['coffee', 'jshint', 'karma:unit']);
169-
grunt.registerTask('install-test', ['bower-install-simple']);
170-
grunt.registerTask('test-server', ['karma:server']);
171-
grunt.registerTask('build', ['clean', 'coffee', 'jshint', 'karma:unit', 'concat', 'ngAnnotate', 'uglify']);
172-
grunt.registerTask('release', ['changelog', 'build']);
163+
// Compile and test (use "build" for dist/*)
164+
grunt.registerTask('default', [
165+
'clean',
166+
'coffee',
167+
'jshint',
168+
'karma:unit'
169+
]);
170+
171+
// Testing
172+
grunt.registerTask('test', [
173+
'clean',
174+
'coffee',
175+
'jshint',
176+
'karma:unit'
177+
]);
178+
grunt.registerTask('install-test', [
179+
'bower-install-simple'
180+
]);
181+
grunt.registerTask('test-server', [
182+
'karma:server'
183+
]);
184+
185+
// Building & releasing
186+
grunt.registerTask('build', [
187+
'clean',
188+
'coffee',
189+
'jshint',
190+
'karma:unit',
191+
'browserify',
192+
'extract_sourcemap',
193+
'uglify'
194+
]);
195+
grunt.registerTask('release', [
196+
'changelog',
197+
'build'
198+
]);
173199
};

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"author": "Jan Philipp",
33
"name": "angular-vertxbus",
44
"description": "AngularJS facade and service acting as a Vert.x SockJS client",
5-
"version": "1.0.0",
5+
"version": "2.0.0-beta.0",
66
"homepage": "http://github.com/knalli/angular-vertxbus",
77
"main": "./dist/angular-vertxbus.js",
88
"keywords": ["angular", "vertx", "facade", "websocket"],

build-data-for-requirejs/angular-vertxbus_end.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

build-data-for-requirejs/angular-vertxbus_start.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

build-data-for-requirejs/vertxbus_end.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

build-data-for-requirejs/vertxbus_start.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

karma.conf.js

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,15 @@ module.exports = function(config) {
4848
injectByScope(scope, 'angular-mocks/angular-mocks.js'),
4949
'temp/test/unit/mock/sockjs.js',
5050
injectByScope(scope, 'vertxbus.js/index.js'),
51-
'temp/**/*.js',
51+
'temp/test/unit/mock/sockjs.js',
52+
'src/lib/**/*.js',
53+
'src/vertxbus-module.js',
54+
'src/vertxbus-wrapper.js',
55+
'src/vertxbus-service.js',
5256
'test/**/*Spec.js'
5357
],
5458

55-
frameworks: ['mocha', 'expect'],
59+
frameworks: ['browserify', 'mocha', 'expect'],
5660

5761

5862
// list of files to exclude
@@ -65,7 +69,24 @@ module.exports = function(config) {
6569
// possible values: 'dots', 'progress', 'junit'
6670
reporters: isDefaultScope(scope) ? ['progress', 'coverage'] : ['progress'],
6771

68-
preprocessors: isDefaultScope(scope) ? { 'temp/src/*.js': ['coverage'] } : undefined,
72+
preprocessors: (function () {
73+
var config = {
74+
'src/**/*.js': [ 'browserify' ]
75+
};
76+
77+
if (isDefaultScope(scope)) {
78+
config['src/**/*.js'].push('coverage');
79+
}
80+
81+
return config;
82+
}()),
83+
84+
// browserify configuration
85+
browserify: {
86+
debug: true,
87+
extensions: ['.js'],
88+
transform: [ 'brfs', 'babelify' ]
89+
},
6990

7091
coverageReporter: isDefaultScope(scope) ? {
7192
dir: 'build/coverage',

0 commit comments

Comments
 (0)