-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulp.config.js
147 lines (135 loc) · 4.32 KB
/
gulp.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
module.exports = function () {
//var browsers = ['google chrome', 'firefox'];
var browsers = ['google chrome'];
var client = './src/client/';
var clientApp = client + 'app/';
var report = './report';
var root = './';
var server = './src/server/';
var specRunnerFile = 'specs.html';
var temp = './.tmp/';
var wiredep = require('wiredep'); // here: to get the list of Bower files
var bowerFiles = wiredep({devDependencies: true})['js'];
var config = {
/**
* Files paths
*/
// all js to vet
alljs: [
'./src/**/*.js',
'./*.js'
],
build: './build/', // some people do './dist/' or'./prod/' or'./production/'
client: client,
css: temp + 'styles.css',
fonts: './bower_components/font-awesome/fonts/**/*.*',
html: clientApp + '**/*.html', // this does not hit the index.html !!!
images: client + 'images/**/*.*',
index: client + 'index.html',
js: [
clientApp + '**/*.module.js',
clientApp + '**/*.js',
'!' + clientApp + '**/*.spec.js' // exclude
],
less: client + 'styles/styles.less',
report: report,
root: root,
server: server,
temp: temp,
/**
* optimize files
*/
optimized: {
app: 'app.js',
css: '*.css',
lib: 'lib.js'
},
/**
* template cache
*/
templateCache: {
file: 'templates.js', // choose any name you like
options: {
module: 'app.core',
standAlone: false, // it depends on the existing module 'app.core'
root: 'app/' // for routes
}
},
/**
* browser sync
*/
browserReloadDelay: 1000,
browsers: browsers,
/**
* Bower and NPM locations
*/
bower: {
json: require('./bower.json'),
directory: './bower_components/',
ignorePath: '../..' // because bower_components are ../.. from index.html
},
packages: [
'./package.json',
'./bower.json'
],
/**
* specs.html, our HTML spec runner
*/
specRunner: client + specRunnerFile,
specRunnerFile: specRunnerFile,
testLibraries: [
'node_modules/mocha/mocha.js',
'node_modules/chai/chai.js',
'node_modules/mocha-clean/index.js',
'node_modules/sinon-chai/lib/sinon-chai.js',
],
specs: [clientApp + '**/*.spec.js'],
/**
* Karma and testing settings
*/
specHelpers: [client + 'test-helpers/*.js'],
serverIntegrationSpecs: [client + 'tests/server-integration/**/*.spec.js'],
/**
* Node settings
*/
defaultPort: 7203,
nodeServer: './src/server/app.js'
};
config.bower = getWiredepDefaultOptions();
config.karma = getKarmaOptions();
return config;
///////////////////////////////
function getWiredepDefaultOptions() {
return {
bowerJson: config.bower.json,
directory: config.bower.directory,
ignorePath: config.bower.ignorePath
};
}
function getKarmaOptions() {
var options = {
files: [].concat(
bowerFiles,
config.specHelpers,
client + '**/*.module.js',
client + '**/*.js', // but *.module.js first!
temp + config.templateCache.file,
config.serverIntegrationSpecs
),
exclude: [],
coverage: {
dir: report + 'coverage',
reporters: [
{type: 'html', subdir: 'report-html'},
{type: 'lcov', subdir: 'report-lcov'},
{type: 'text-summary'} // if we forget anything, it will be reported to console
]
},
preprocessors: {}
};
// ignore the specs but get the js, because you want to know the real coverage,
// and you don't need tests for your tests :)
options.preprocessors[clientApp + '**/!(*.spec)+(.js)'] = ['coverage'];
return options;
}
};