-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
82 lines (65 loc) · 2.8 KB
/
gulpfile.js
File metadata and controls
82 lines (65 loc) · 2.8 KB
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
const path = require("path");
var fs = require('fs');
var beautify = require('js-beautify').js;
var gulp = require('gulp');
gulp.task('default', function() {
console.log('Hello Everyone !!!');
});
gulp.task('build-crm-module', function(done) {
buildCrmModule();
done();
});
gulp.task('build-crm-module-dev', function(done) {
buildCrmModule();
const jsFile = path.resolve(__dirname, './' + TARGET_DIR + '/' + TARGET_NAME + '.js');
var data = fs.readFileSync(jsFile, {encoding:'utf8', flag:'r'});
var new_data = beautify(data, { indent_size: 2, space_in_empty_paren: true });
fs.writeFileSync(jsFile, new_data, { encoding: "utf8" });
done();
});
const TARGET_DIR = 'build-crm-module';
const TARGET_NAME = 'crm-datagrid';
function buildCrmModule() {
clearBuildPluginFolder();
var itemsToReplace = copyNecessaryFiles();
replaceLinksInMainPage(itemsToReplace);
}
function clearBuildPluginFolder() {
var dir = './' + TARGET_DIR;
if (fs.existsSync(dir)){
fs.rmSync(dir, { recursive: true, force: true });
}
fs.mkdirSync(dir, { recursive: true });
}
function copyNecessaryFiles() {
var itemsToReplace = [];
fs.copyFileSync('build/crm-iframe-init.js', TARGET_DIR + '/crm-iframe-init.js');
fs.copyFileSync('build/index.html', TARGET_DIR + '/' + TARGET_NAME + '.html');
const jsFiles = fs.readdirSync('build/static/js');
jsFiles.forEach(file => {
if(file.startsWith('main') && file.endsWith('.js')) {
fs.copyFileSync('build/static/js/' + file, TARGET_DIR + '/' + TARGET_NAME + '.js');
itemsToReplace.push(['/static/js/' + file, TARGET_NAME + '.js']);
}
});
const cssFiles = fs.readdirSync('build/static/css');
cssFiles.forEach(file => {
if(file.startsWith('main') && file.endsWith('.css')) {
fs.copyFileSync('build/static/css/' + file, TARGET_DIR + '/' + TARGET_NAME + '.css');
itemsToReplace.push(['/static/css/' + file, TARGET_NAME + '.css']);
}
});
return itemsToReplace;
}
function replaceLinksInMainPage(itemsToReplace) {
var result = fs.readFileSync(TARGET_DIR + '/' + TARGET_NAME + '.html', {encoding:'utf8', flag:'r'});
itemsToReplace.forEach(item => {
result = result.replace(item[0], item[1]);
});
var externalLinks = '<script crossorigin src="https://unpkg.com/react@17/umd/react.production.min.js"></script>' +
'<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>' +
'<script crossorigin src="https://unpkg.com/@fluentui/react@8/dist/fluentui-react.js"></script>' +
'<script crossorigin src="https://unpkg.com/@fluentui/react-hooks@8/dist/react-hooks.js"></script>';
result = result.replace('</head>', externalLinks + '</head>');
fs.writeFileSync(TARGET_DIR + '/' + TARGET_NAME + '.html', result, { encoding: "utf8" });
}