-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathbuild.js
87 lines (74 loc) · 2.66 KB
/
build.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
/**
* Copyright 2017 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const fs = require('fs-extra');
const concat = require('concat');
const copy = require('copy');
const rcopy = require('recursive-copy');
const emptyDir = require('empty-dir');
const downloadFile = require('download-file');
const projectFolders = [
'hot_topics', 'toxicity_timeline', 'comment_filter'
];
const outputFolder = './dist';
fs.emptyDir(outputFolder).then(concatJs).then(copyExtensions);
function concatJs() {
return concat([
'common/utils.js',
'common/pubsub.js',
'common/comments.js',
'common/toxicity-analyzer.js',
'common/comment-watcher.js',
'common/info-panel.js',
]);
};
function copyExtensions(concatJs) {
projectFolders.forEach((projectFolder) => {
rcopy(`./${projectFolder}`, `./dist/${projectFolder}/`).then(() => {
// Copies common JS.
fs.writeFileSync(
__dirname + `/dist/${projectFolder}/common.js`, concatJs);
// Copies common CSS.
fs.writeFileSync(
__dirname + `/dist/${projectFolder}/common.css`,
fs.readFileSync(__dirname + '/common/info-panel.css'));
// Copies common images.
copy(
['common/*.svg', 'common/*.png'], `./dist/${projectFolder}/`,
() => {});
// Copies common Mustache templates.
copy(
'common/templates/*.mst', `./dist/${projectFolder}/templates`,
() => {});
// Copies templating library.
copy(
'node_modules/mustache/mustache.min.js',
`./dist/${projectFolder}/third_party`, {flatten: true}, () => {});
// Copies common fonts.
copy(
'common/fonts/*', `./dist/${projectFolder}/fonts`,
() => {});
// Toxic Graphs specific libraries.
if (projectFolder === 'toxicity_timeline') {
copy(
'node_modules/chart.js/dist/Chart.bundle.min.js',
`./dist/${projectFolder}/third_party`, {flatten: true}, () => {});
downloadFile('https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/datejs/date.js', {
directory: `./dist/${projectFolder}/third_party`
});
}
});
})
}