-
Notifications
You must be signed in to change notification settings - Fork 1
/
Build.js
125 lines (108 loc) · 3.72 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
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
const fs = require('fs')
const path = require('path')
const { Log, LogColors } = require('./Log')
const JSProcessorOptions = {
compact: true,
controlFlowFlattening: false,
controlFlowFlatteningThreshold: 0.75,
deadCodeInjection: false,
deadCodeInjectionThreshold: 0.4,
debugProtection: false,
debugProtectionInterval: 0,
disableConsoleOutput: false,
domainLock: [],
domainLockRedirectUrl: 'about:blank',
forceTransformStrings: [],
identifierNamesCache: null,
identifierNamesGenerator: 'hexadecimal',
identifiersDictionary: [],
identifiersPrefix: '',
ignoreImports: false,
inputFileName: '',
log: false,
numbersToExpressions: false,
optionsPreset: 'default',
renameGlobals: false,
renameProperties: false,
renamePropertiesMode: 'safe',
reservedNames: [],
reservedStrings: [],
seed: 0,
selfDefending: false,
simplify: true,
sourceMap: false,
sourceMapBaseUrl: '',
sourceMapFileName: '',
sourceMapMode: 'separate',
sourceMapSourcesMode: 'sources-content',
splitStrings: false,
splitStringsChunkLength: 10,
stringArray: true,
stringArrayCallsTransform: true,
stringArrayCallsTransformThreshold: 0.5,
stringArrayEncoding: [],
stringArrayIndexesType: ['hexadecimal-number'],
stringArrayIndexShift: false,
stringArrayRotate: false,
stringArrayShuffle: false,
stringArrayWrappersCount: 1,
stringArrayWrappersChainedCalls: false,
stringArrayWrappersParametersMaxCount: 2,
stringArrayWrappersType: 'variable',
stringArrayThreshold: 0.75,
target: 'browser',
transformObjectKeys: false,
unicodeEscapeSequence: false,
}
const CSSProcessorOptions = {
level: 2,
}
const CSSProcessor = require('clean-css')
const JSProcessor = require('javascript-obfuscator')
let CurrentStylesheet = "";
let CurrentScript = "";
const PackStylesheets = async () => {
Log('[BUILD] - Merging CSS files...')
let Stylesheet = ''
let filenames = fs.readdirSync(__dirname + '/css')
for (let x = 0; x < filenames.length; x++) {
filenames[x] = __dirname + '/css/' + filenames[x]
}
for (let x = 0; x < filenames.length; x++) {
if (filenames[x].endsWith('.css')) {
Stylesheet += fs.readFileSync(filenames[x], { encoding: 'utf8', flag: 'r' }) + '\n\n'
}
}
for (let x = 0; x < Stylesheet.length; x++) {
Stylesheet = Stylesheet.replace('\n', '')
Stylesheet = Stylesheet.replace(' ', '')
}
Stylesheet = new CSSProcessor(CSSProcessorOptions).minify(Stylesheet).styles;
fs.mkdir('./build', (err) => {})
let OutputFile = path.join(__dirname, '/build/prod.css')
fs.writeFileSync(OutputFile, Stylesheet)
CurrentStylesheet = Stylesheet
Log(`[BUILD] - Finished file: ${OutputFile}`, LogColors.Success)
}
const PackScripts = async () => {
Log('[BUILD] - Merging Javascript files...')
let Script = ''
let filenames = fs.readdirSync(__dirname + '/scripts')
for (let x = 0; x < filenames.length; x++) {
filenames[x] = __dirname + '/scripts/' + filenames[x]
}
for (let x = 0; x < filenames.length; x++) {
if (filenames[x].endsWith('.js')) {
Script += fs.readFileSync(filenames[x], { encoding: 'utf8', flag: 'r' }) + '\n\n'
}
}
//Script = JSProcessor.obfuscate(Script, JSProcessorOptions).getObfuscatedCode()
fs.mkdir('./build', (err) => {})
let OutputFile = path.join(__dirname, '/build/prod.js')
fs.writeFileSync(OutputFile, Script, { recursive: true })
CurrentScript = Script
Log(`[BUILD] - Finished file: ${OutputFile}`, LogColors.Success)
}
PackStylesheets()
PackScripts()
module.exports = { CurrentStylesheet, CurrentScript }