forked from igvteam/igv-webapp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gruntfile.js
91 lines (73 loc) · 2.49 KB
/
Gruntfile.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
const webpackConfig = require('./webpack.config.js');
module.exports = function (grunt) {
grunt.initConfig({
webpack:
{
options:
{
stats: !process.env.NODE_ENV || process.env.NODE_ENV === 'development'
},
prod: webpackConfig,
dev: Object.assign({watch: true}, webpackConfig)
},
copy: {
js: {
expand: true,
src: 'js/*',
dest: 'build/',
},
config: {
src: 'igvwebConfig.js',
dest: 'dist/',
},
resources: {
expand: true,
src: 'resources/*',
dest: 'dist/'
}
},
'string-replace': {
dist: {
files: {
'dist/index.html': 'index.html'
},
options: {
replacements: [
{
pattern: '<script type="module" src="js/app.js"></script>',
replacement: ''
},
{
pattern: '<!--bundle-->',
replacement: '<script src="bundle.js"></script>'
}]
}
}
},
clean: ['build']
});
grunt.loadNpmTasks('grunt-webpack');
grunt.loadNpmTasks('grunt-string-replace');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('default', ['copy', 'inject-apikeys', 'webpack:prod', 'string-replace:dist', 'clean']);
grunt.task.registerTask('inject-apikeys', 'Inject API keys', function () {
var bitlyToken = grunt.option('bitlyToken');
var apiKey = grunt.option('apiKey');
var clientId = grunt.option('clientId');
var contents;
contents = grunt.file.read('dist/igvwebConfig.js');
if(bitlyToken || apiKey || clientId) {
if (bitlyToken) {
contents = contents.replace('BITLY_TOKEN', bitlyToken);
}
if (apiKey) {
contents = contents.replace('API_KEY', apiKey);
}
if (clientId) {
contents = contents.replace("CLIENT_ID", clientId);
}
grunt.file.write('dist/igvwebConfig.js', contents);
}
});
};