original js libs

This commit is contained in:
Yuri Kuznetsov
2022-06-27 10:54:59 +03:00
parent 74844260c8
commit b14a989141
8 changed files with 106 additions and 53 deletions
+13 -12
View File
@@ -40,17 +40,18 @@ module.exports = grunt => {
const bundleConfig = require('./frontend/bundle-config.json');
const libs = require('./frontend/libs.json');
const bundledDir = 'client/lib/bundled';
const originalLibDir = 'client/lib/original';
let bundleJsFileList = buildUtils.getPreparedBundleLibList(libs).concat(bundledDir + '/espo.js');
let bundleJsFileList = buildUtils.getPreparedBundleLibList(libs).concat(originalLibDir + '/espo.js');
let copyJsFileList = buildUtils.getCopyLibDataList(libs);
let minifyLibFileList = copyJsFileList
.filter(item => item.minify)
.reduce((map, item) => (
map[item.dest] = item.dest,
map
), {});
.reduce((map, item) => {
map[item.dest] = item.originalDest;
return map;
}, {});
let currentPath = path.dirname(fs.realpathSync(__filename));
@@ -254,16 +255,16 @@ module.exports = grunt => {
let contents = (new Bundler()).bundle(bundleConfig.jsFiles);
if (!fs.existsSync(bundledDir)) {
fs.mkdirSync(bundledDir);
if (!fs.existsSync(originalLibDir)) {
fs.mkdirSync(originalLibDir);
}
fs.writeFileSync(bundledDir + '/espo.js', contents, 'utf8');
fs.writeFileSync(originalLibDir + '/espo.js', contents, 'utf8');
});
grunt.registerTask('prepare-bundled-libs', () => {
grunt.registerTask('prepare-lib-original', () => {
// Even though `npm ci` runs the same script, 'clean:start' deletes files.
cp.execSync("node js/scripts/prepare-bundled");
cp.execSync("node js/scripts/prepare-lib-original");
});
grunt.registerTask('chmod-folders', () => {
@@ -439,7 +440,7 @@ module.exports = grunt => {
'less',
'cssmin',
'espo-bundle',
'prepare-bundled-libs',
'prepare-lib-original',
'uglify:bundle',
'copy:frontendLib',
'uglify:lib',
@@ -98,6 +98,6 @@ class DevModeJsFileListProvider
{
$arr = explode('/', $path);
return 'client/lib/bundled/' . array_slice($arr, -1)[0];
return 'client/lib/original/' . array_slice($arr, -1)[0];
}
}
@@ -1,13 +1,13 @@
{
"full-calendar": {
"path": "client/modules/crm/lib/fullcalendar.js",
"devPath": "node_modules/fullcalendar/dist/fullcalendar.js",
"devPath": "client/modules/crm/lib/original/fullcalendar.js",
"exportsTo": "$.fn",
"exportsAs": "fullCalendar"
},
"vis": {
"path": "client/modules/crm/lib/vis.js",
"devPath": "node_modules/vis/dist/vis.js",
"devPath": "client/modules/crm/lib/original/vis.js",
"exportsAs": "vis"
}
}
@@ -1,7 +1,7 @@
{
"Flotr": {
"path": "client/lib/flotr2.js",
"devPath": "node_modules/flotr2/flotr2.js",
"devPath": "client/lib/original/flotr2.js",
"exportsTo": "window",
"exportsAs": "Flotr"
},
@@ -11,13 +11,13 @@
},
"espo-funnel-chart": {
"path": "client/lib/espo-funnel-chart.js",
"devPath": "node_modules/espo-funnel-chart/build/espo-funnel-chart.js",
"devPath": "client/lib/original/espo-funnel-chart.js",
"exportsTo": "window",
"exportsAs": "EspoFunnel"
},
"Summernote": {
"path": "client/lib/summernote.js",
"devPath": "node_modules/summernote/dist/summernote.js",
"devPath": "client/lib/original/summernote.js",
"exportsTo": "$.fn",
"exportsAs": "summernote"
},
@@ -27,19 +27,19 @@
},
"Selectize": {
"path": "client/lib/selectize.js",
"devPath": "node_modules/selectize/dist/js/standalone/selectize.js",
"devPath": "client/lib/original/selectize.js",
"exportsTo": "window",
"exportsAs": "Selectize"
},
"cronstrue": {
"path": "client/lib/cronstrue-i18n.js",
"devPath": "node_modules/cronstrue/dist/cronstrue-i18n.js",
"devPath": "client/lib/original/cronstrue-i18n.js",
"exportsTo": "window",
"exportsAs": "cronstrue"
},
"Cropper": {
"path": "client/lib/cropper.js",
"devPath": "node_modules/cropper/dist/cropper.js",
"devPath": "client/lib/original/cropper.js",
"exportsTo": "$.fn",
"exportsAs": "cropper"
},
@@ -49,49 +49,49 @@
},
"Colorpicker": {
"path": "client/lib/bootstrap-colorpicker.js",
"devPath": "node_modules/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js",
"devPath": "client/lib/original/bootstrap-colorpicker.js",
"exportsTo": "$.fn",
"exportsAs": "colorpicker"
},
"exif": {
"path": "client/lib/exif.js",
"devPath": "node_modules/exif-js/exif.js",
"devPath": "client/lib/original/exif.js",
"exportsTo": "window",
"exportsAs": "EXIF"
},
"JsBarcode": {
"path": "client/lib/JsBarcode.all.js",
"devPath": "node_modules/jsbarcode/dist/JsBarcode.all.js",
"devPath": "client/lib/original/JsBarcode.all.js",
"exportsTo": "window",
"exportsAs": "JsBarcode"
},
"qrcode": {
"path": "client/lib/qrcode.js",
"devPath": "node_modules/qrcodejs/qrcode.js",
"devPath": "client/lib/original/qrcode.js",
"exportsTo": "window",
"exportsAs": "QRCode"
},
"ace": {
"path": "client/lib/ace.js",
"devPath": "node_modules/ace-builds/src-noconflict/ace.js",
"devPath": "client/lib/original/ace.js",
"exportsTo": "window",
"exportsAs": "ace"
},
"ace-mode-javascript": {
"path": "client/lib/ace-mode-javascript.js",
"devPath": "node_modules/ace-builds/src-noconflict/mode-javascript.js",
"devPath": "client/lib/original/ace-mode-javascript.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/mode/javascript"
},
"ace-ext-language_tools": {
"path": "client/lib/ace-ext-language_tools.js",
"devPath": "node_modules/ace-builds/src-noconflict/ext-language_tools.js",
"devPath": "client/lib/original/ace-ext-language_tools.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/ext/language_tools"
},
"ace-theme-tomorrow_night": {
"path": "client/lib/ace-theme-tomorrow_night.js",
"devPath": "node_modules/ace-builds/src-noconflict/theme-tomorrow_night.js",
"devPath": "client/lib/original/ace-theme-tomorrow_night.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/theme/tomorrow_night"
}
+40 -4
View File
@@ -53,24 +53,59 @@ let BuildUtils = {
getPreparedBundleLibList: function (libs) {
return BuildUtils.getBundleLibList(libs)
.map(file => 'client/lib/bundled/' + file.split('/').slice(-1));
.map(file => 'client/lib/original/' + file.split('/').slice(-1));
},
destToOriginalDest: function (dest) {
let path = dest.split('/');
return path.slice(0, -1)
.concat('original')
.concat(path.slice(-1))
.join('/');
},
/**
* @param {Object[]} libs
* @return {{
* src: string,
* dest: string,
* originalDest: string|null,
* minify: boolean
* }[]}
*/
getCopyLibDataList: function (libs) {
let list = [];
/**
* @param {Object} item
* @return {string}
*/
let getItemDest = item => item.dest || 'client/lib/' + item.src.split('/').pop();
/**
* @param {Object} item
* @return {string}
*/
let getItemOriginalDest = item => {
return BuildUtils.destToOriginalDest(
getItemDest(item)
);
};
libs.forEach(item => {
if (item.bundle) {
return;
}
let minify = item.minify;
let minify = !!item.minify;
if (item.files) {
item.files.forEach(item => {
list.push({
src: item.src,
dest: item.dest || 'client/lib/' + item.src.split('/').pop(),
dest: getItemDest(item),
originalDest: minify ? getItemOriginalDest(item) : null,
minify: minify,
});
});
@@ -84,7 +119,8 @@ let BuildUtils = {
list.push({
src: item.src,
dest: item.dest || 'client/lib/' + item.src.split('/').pop(),
dest: getItemDest(item),
originalDest: minify ? getItemOriginalDest(item) : null,
minify: minify,
});
});
+20 -6
View File
@@ -31,6 +31,7 @@ const sys = require('util');
const cp = require('child_process');
const archiver = require('archiver');
const process = require('process');
const buildUtils = require('./build-utils');
const exec = cp.exec;
const execSync = cp.execSync;
@@ -260,7 +261,7 @@ class Diff
fileList.push('client/lib/espo.min.js');
fileList.push('client/lib/espo.min.js.map');
fileList.push('client/lib/bundled/espo.js');
fileList.push('client/lib/original/espo.js');
fs.readdirSync('client/css/espo/').forEach(file => {
fileList.push('client/css/espo/' + file);
@@ -536,7 +537,7 @@ class Diff
let resolveItemDest = item =>
item.dest || 'client/lib/' + item.src.split('/').pop();
let resolveBundledItemDest = item => 'client/lib/bundled/' + item.src.split('/').pop();
let resolveBundledItemDest = item => 'client/lib/original/' + item.src.split('/').pop();
let resolveItemName = item => {
if (item.name) {
@@ -618,9 +619,13 @@ class Diff
);
if (minify) {
item.files.forEach(item =>
data.filesToCopy.push(resolveItemDest(item) + '.map')
item.files.forEach(item => {
data.filesToCopy.push(resolveItemDest(item) + '.map');
data.filesToCopy.push(
buildUtils.destToOriginalDest(resolveItemDest(item))
);
});
}
return;
@@ -630,6 +635,9 @@ class Diff
if (minify) {
data.filesToCopy.push(resolveItemDest(item) + '.map');
data.filesToCopy.push(
buildUtils.destToOriginalDest(resolveItemDest(item))
);
}
});
@@ -657,9 +665,12 @@ class Diff
);
if (minify) {
item.files.forEach(item =>
data.filesToDelete.push(resolveItemDest(item) + '.map')
item.files.forEach(item => {
data.filesToDelete.push(resolveItemDest(item) + '.map');
data.filesToDelete.push(
buildUtils.destToOriginalDest(resolveItemDest(item))
);
});
}
return;
@@ -669,6 +680,9 @@ class Diff
if (minify) {
data.filesToDelete.push(resolveItemDest(item) + '.map');
data.filesToDelete.push(
buildUtils.destToOriginalDest(resolveItemDest(item))
);
}
});
@@ -32,25 +32,27 @@ const buildUtils = require('../build-utils');
const libs = require('./../../frontend/libs.json');
const libDir = './client/lib';
const bundledDir = './client/lib/bundled';
const originalLibDir = './client/lib/original';
const libCrmDir = './client/modules/crm/lib';
const originalLibCrmDir = './client/modules/crm/lib/original';
if (!fs.existsSync(libDir)) {
fs.mkdirSync(libDir);
}
[libDir, originalLibDir, libCrmDir, originalLibCrmDir]
.filter(path => !fs.existsSync(path))
.forEach(path => fs.mkdirSync(path))
if (!fs.existsSync(bundledDir)) {
fs.mkdirSync(bundledDir);
}
fs.readdirSync(bundledDir)
fs.readdirSync(originalLibDir)
.filter(file => file !== 'espo.js')
.forEach(file => fs.unlinkSync(bundledDir + '/' + file));
.forEach(file => fs.unlinkSync(originalLibDir + '/' + file));
/** @var {string[]} */
const libSrcList = buildUtils.getBundleLibList(libs);
libSrcList.forEach(src => {
let dest = bundledDir + '/' + src.split('/').slice(-1);
let dest = originalLibDir + '/' + src.split('/').slice(-1);
fs.copyFileSync(src, dest);
});
buildUtils.getCopyLibDataList(libs)
.filter(item => item.minify)
.forEach(item => fs.copyFileSync(item.src, item.originalDest))
+1 -1
View File
@@ -11,7 +11,7 @@
"test": "grunt run-tests",
"test-unit": "grunt run-unit-tests",
"test-integration": "grunt run-integration-tests",
"postinstall": "node js/scripts/postinstall-cleanup && node js/scripts/prepare-bundled"
"postinstall": "node js/scripts/postinstall-cleanup && node js/scripts/prepare-lib-original.js"
},
"author": "Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko",
"license": "GPL-3.0",