original js libs
This commit is contained in:
+13
-12
@@ -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
@@ -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,
|
||||
});
|
||||
});
|
||||
|
||||
+22
-8
@@ -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
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user