-
Notifications
You must be signed in to change notification settings - Fork 2
/
publish.js
64 lines (54 loc) · 2 KB
/
publish.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
var exec = require('child_process').exec;
var version = require('./package.json')['version'];
var fs = require('fs');
// Set CDN Url to use for compilaiton.
var cdnUrl = 'https://cdn.rawgit.com/slamby/slamby-website/' + version + '/dist';
// Set SASS CDN url
function setSassCDNUrl(useCDN=true){
var content = "// Automatically generated text from publish.js. Do not modify it.\r\n";
if(useCDN){
content = content.concat('$publicPath: "'+cdnUrl+'";');
} else {
content = content.concat('$publicPath: "";');
}
fs.writeFile("src/assets/scss/baseUrl.scss", content, function(err) {
if(err) {
return console.log(err);
}
});
}
//Change index.html scr + href to CDN compatible
function setIndexCDN(){
var fileName = __dirname + '/dist/index.html';
fs.readFile(fileName, 'utf8', function(err, html) {
var content = html;
content = content.replace(/(?:src)=([^'])(?!http|https)(?:(.*?))(js|css|ico|png).*?/g, 'src="'+cdnUrl+'/$2$3');
content = content.replace(/(?:href)=([^'])(?!http|https)(?:(.*?))(js|css|ico|png).*?/g, 'href="'+cdnUrl+'/$2$3'); //todo make it nicer with regexp.
fs.writeFile(fileName, content, function(err) {
if(err) {
return console.log(err);
}
});
});
}
// Set CDN Sass URL for compile
setSassCDNUrl();
// Compile aot prod version with CDN base url.
exec('ng build --prod --aot', {maxBuffer: 1024 * 500}, function(error, stdout, stderr) {
if(error) {
console.log(err);
} else {
console.log('Version: ' + version + ' production build done.')
// Modify index.html to be CDN compatible;
setIndexCDN();
// GIT, commit, push, create tag, push tag.
require('simple-git')()
.add('./*')
.commit("Release commit version: " + version)
.addTag(version)
.push()
.pushTags()
}
// set back cdn for development mode.
setSassCDNUrl(false);
});