-
-
Notifications
You must be signed in to change notification settings - Fork 12
/
gulpfile.js
232 lines (205 loc) · 5.72 KB
/
gulpfile.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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
process.stdout.write("Loading scarletsframe-compiler\r");
let compileEngineOnly = false;
let isCI = process.env.CI;
let editorOnly = process.env.EDITOR_ONLY || false;
let withNodes = !editorOnly && true;
let Gulp = require('gulp');
let os = require('os');
let notifier = os.platform() === 'win32'
? new require('node-notifier/notifiers/balloon')() // For Windows
: require('node-notifier'); // For other OS
// Engine for Node.js or Browser
let compileTargets = editorOnly ? {} : {
// Compiler for Blackprint Engine
'engine-js':{
versioning: !isCI && 'editor/dev.html',
// stripURL:'editor/',
js:{
file:'dist/engine.min.js',
wrapped: true,
header:"/* Blackprint \n MIT Licensed */",
combine:[
'engine-js/src/constructor/CustomEvent.js',
'engine-js/src/_init.js',
'engine-js/src/constructor/Port/_init.js',
// Combine files from all directory recursively
'engine-js/src/**/*.js',
'!engine-js/src/nodes/*.js',
'engine-js/src/nodes/*.js',
'!engine-js/src/skeleton/*.js',
],
}
},
'engine-js-skeleton':{
versioning: !isCI && 'editor/dev.html',
// stripURL:'editor/',
js:{
file:'dist/skeleton.min.js',
wrapped: true,
header:"/* Blackprint \n MIT Licensed */",
combine:[
'engine-js/src/skeleton/_init.js',
'engine-js/src/skeleton/*.js',
],
}
},
'code-generation':{
versioning: !isCI && 'editor/dev.html',
// stripURL:'editor/',
js:{
file:'dist/code-generation.min.js',
wrapped: true,
header:"/* Blackprint \n MIT Licensed */",
combine:[
'code-generation/src/_init.js',
'code-generation/src/*.js',
'code-generation/src/languages/*.js',
],
}
},
// Compiler for Blackprint Remote Engine
'remote-control-js':{
versioning: !isCI && 'editor/dev.html',
// stripURL:'editor/',
js:{
file:'dist/remote-control.min.js',
wrapped: true,
header:"/* Blackprint \n MIT Licensed */",
combine:[
'remote-control/js/src/_init.js',
// Combine files from all directory recursively
'remote-control/js/src/**/*.js',
],
},
sf:{
file:'dist/remote-control.sf',
combine:'remote-control/js/src/**/*.sf',
prefix:'BlackprintRemote',
},
},
};
// Editor and Sketch library for Browser
if(!compileEngineOnly){
// Use `default` if you're not exporting project as library/module
if(!isCI || editorOnly){
compileTargets.default = {
versioning: 'editor/dev.html',
stripURL: 'editor/',
js:{
file:'editor/assets/myjs.min.js',
// Will be processed from the top to bottom
combine:[
// Combine files from all directory recursively
'editor/src/**/*.js',
],
},
scss:{
file:'editor/assets/mycss.min.css',
combine:'editor/src/**/*.scss',
},
sf:{
file:'editor/assets/custom.sf',
combine:'editor/src/**/*.sf',
prefix:'BPEditor',
},
};
require('./editor/utils/build-docs.js')(Gulp, isCI);
}
if(!editorOnly){
// This needed if you want to maintain Blackprint's source code
// You can specify other property if you exporting something
compileTargets.blackprint = {
versioning: !isCI && 'editor/dev.html',
// stripURL:'editor/',
js:{
file:'dist/blackprint.min.js',
wrapped: true,
header:"/* Blackprint \n MIT Licensed */",
combine:[
// Start private wrapper from here
'src/_init.js',
// Import classes first, or sf.component can't extend them
'src/constructor/*.js',
// Combine all files but not recursive
'src/*.js',
// Combine files from all directory recursively
'src/**/*.js',
],
},
sf:{
file:'dist/blackprint.sf',
wrapped: true,
header:"/* Blackprint \n MIT Licensed */",
prefix:'Blackprint',
combine:[
// Start private wrapper from here
'src/_init.sf',
// Combine files from all directory recursively
'src/**/*.sf'
],
}
};
}
}
var SFC = require("scarletsframe-compiler")({
// Start the server
browserSync:{
// proxy:'http://myjs.sandbox',
port: process.env.PORT || 6789, // Accessible-> http://localhost:6789
ghostMode: false, // Use synchronization between browser?
ui: false,
open: false,
// https: true,
// Standalone server with BrowserSync
server:{
baseDir:'editor/',
index:'index.html',
middleware(req, res, next){
// if(true) return next(); // Comment this to allow CORS for all domain
// Always disable this if you don't need it
// it can dangerous if you leave this active
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader('Access-Control-Allow-Origin', '*');
next();
},
routes: {
"/dist": "dist"
}
}
},
// Recompile some files before being watched on startup
// You may want to check if the git history was changed
// And then set this to true with JavaScript
startupCompile: !false,
// Choose your default editor
// You must register "subl" or "code" to the PATH environment variable.
// https://www.sublimetext.com/docs/command_line.html
//
// https://code.visualstudio.com/docs/editor/command-line#_code-is-not-recognized-as-an-internal-or-external-command
editor: 'vsc', // only 'sublime' or 'vsc' that currently supported
// Optional if you want to remove source map on production mode
includeSourceMap: process.env.production || true,
hotReload:{
html: true,
sf: true,
js: true,
scss: true
},
onCompiled(which){
notifier.notify({
title: 'Gulp Compilation',
message: which+' was finished!',
timeout: 4, time: 4,
});
},
onInit(){
if(withNodes && !compileEngineOnly)
require('./blackprint-config-loader.js')(SFC, Gulp);
},
beforeInit(){
if(withNodes && !compileEngineOnly && !isCI)
SFC.clearGenerateImport('editor/dev.html');
},
// ===== Modify me, add slash as last character if it's directory =====
path: compileTargets
}, Gulp);