lib minify

This commit is contained in:
Yuri Kuznetsov
2021-06-23 12:58:25 +03:00
parent 14e5446696
commit f02cfc5a1a
3 changed files with 101 additions and 37 deletions
+29 -4
View File
@@ -40,6 +40,13 @@ module.exports = grunt => {
let jsFilesToBundle = getBundleLibList().concat(bundleConfig.jsFiles);
let jsFilesToCopy = getCopyLibDataList();
let libFilesToMinify = jsFilesToCopy
.filter(item => item.minify)
.reduce((map, item) => (
map[item.dest] = item.dest,
map
), {});
let currentPath = path.dirname(fs.realpathSync(__filename));
let themeList = [];
@@ -111,12 +118,25 @@ module.exports = grunt => {
uglify: {
options: {
mangle: false,
mangle: true,
sourceMap: true,
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
output: {
comments: /^!/,
},
},
bundle: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
},
files: {
'build/tmp/client/espo.min.js': jsFilesToBundle,
},
},
lib: {
files: libFilesToMinify,
},
'build/tmp/client/espo.min.js': jsFilesToBundle,
},
copy: {
options: {
mode: true,
@@ -333,11 +353,12 @@ module.exports = grunt => {
'mkdir:tmp',
'less',
'cssmin',
'uglify',
'uglify:bundle',
'copy:frontendFolders',
'copy:frontendLib',
'copy:frontendCommitedLib',
'copy:backend',
'uglify:lib',
'replace',
'clean:beforeFinal',
'copy:final',
@@ -426,11 +447,14 @@ function getCopyLibDataList() {
return;
}
let minify = item.minify;
if (item.files) {
item.files.forEach(item => {
list.push({
src: item.src,
dest: 'build/tmp/' + (item.dest || 'client/lib/' + item.src.split('/').pop()),
minify: minify,
});
});
@@ -444,6 +468,7 @@ function getCopyLibDataList() {
list.push({
src: item.src,
dest: 'build/tmp/' + (item.dest || 'client/lib/' + item.src.split('/').pop()),
minify: minify,
});
});
+14 -7
View File
@@ -102,25 +102,30 @@
"src": "node_modules/cropper/dist/cropper.js"
},
{
"src": "node_modules/cronstrue/dist/cronstrue-i18n.js"
"src": "node_modules/cronstrue/dist/cronstrue-i18n.js",
"minify": true
},
{
"src": "node_modules/exif-js/exif.js"
"src": "node_modules/exif-js/exif.js",
"minify": true
},
{
"src": "node_modules/jsbarcode/dist/JsBarcode.all.js"
"src": "node_modules/jsbarcode/dist/JsBarcode.all.js",
"minify": true
},
{
"src": "node_modules/qrcodejs/qrcode.js"
},
{
"src": "node_modules/summernote/dist/summernote.js"
"src": "node_modules/summernote/dist/summernote.js",
"minify": true
},
{
"src": "node_modules/espo-funnel-chart/build/espo-funnel-chart.js"
},
{
"src": "node_modules/flotr2/flotr2.js"
"src": "node_modules/flotr2/flotr2.js",
"minify": true
},
{
"name": "ace-builds",
@@ -141,10 +146,12 @@
},
{
"src": "node_modules/fullcalendar/dist/fullcalendar.js",
"dest": "client/modules/crm/lib/fullcalendar.js"
"dest": "client/modules/crm/lib/fullcalendar.js",
"minify": true
},
{
"src": "node_modules/vis/dist/vis.js",
"dest": "client/modules/crm/lib/vis.js"
"dest": "client/modules/crm/lib/vis.js",
"minify": true
}
]
+58 -26
View File
@@ -256,8 +256,6 @@ class Diff
fileList.push(file);
});
console.log(fileList);
libData.filesToCopy.forEach(item => fileList.push(item));
fileList.push('client/espo.min.js');
@@ -514,15 +512,16 @@ class Diff
let libOldDataList = [];
if (~this._getVersionAllFileList(versionFrom).indexOf('frontend/libs.json')) {
libOldDataList = JSON.parse(
cp.execSync("git show " + commitHash + ":frontend/libs.json").toString() || '[]'
);
libOldDataList = JSON
.parse(
cp.execSync("git show " + commitHash + ":frontend/libs.json").toString() || '[]'
)
.filter(item => !item.bundle);
}
let changedLibList = [];
let currentLibList = [];
let libNewDataList = require(this.espoPath + '/frontend/libs.json');
let libNewDataList = require(this.espoPath + '/frontend/libs.json')
.filter(item => !item.bundle);
let resolveItemDest = item =>
item.dest || 'client/lib/' + item.src.split('/').pop();
@@ -545,46 +544,71 @@ class Diff
return name;
};
libNewDataList.forEach(item => {
if (item.bundle) {
return;
}
let changedLibList = [];
let currentLibList = [];
let toMinifyOldMap = {};
libOldDataList.forEach(item => {
let name = resolveItemName(item);
toMinifyOldMap[name] = item.minify || false;
});
libNewDataList.forEach(item => {
let name = resolveItemName(item);
let minify = item.minify || false;
if (!depsNew[name]) {
throw new Error("Not installed lib '" + name + "' `frontend/libs.json`.");
}
currentLibList.push(name);
let isAdded = !(name in depsOld);
let versionNew = depsNew[name].version || null;
let versionOld = (depsOld[name] || {}).version || null;
if (versionNew !== versionOld) {
changedLibList.push(name);
let wasMinified = (toMinifyOldMap || {})[name];
if (item.files) {
if (
!isAdded &&
versionNew === versionOld &&
minify === wasMinified
) {
return;
}
changedLibList.push(name);
if (item.files) {
item.files.forEach(item =>
data.filesToCopy.push(resolveItemDest(item))
);
if (minify) {
item.files.forEach(item =>
data.filesToCopy.push(resolveItemDest(item))
data.filesToCopy.push(resolveItemDest(item) + '.map')
);
return;
}
data.filesToCopy.push(resolveItemDest(item));
return;
}
data.filesToCopy.push(resolveItemDest(item));
if (minify) {
data.filesToCopy.push(resolveItemDest(item) + '.map');
}
});
libOldDataList.forEach(item => {
if (item.bundle) {
return;
}
let name = resolveItemName(item);
let minify = item.minify || false;
let toRemove = false;
if (
@@ -603,12 +627,20 @@ class Diff
data.filesToDelete.push(resolveItemDest(item))
);
if (minify) {
item.files.forEach(item =>
data.filesToDelete.push(resolveItemDest(item) + '.map')
);
}
return;
}
data.filesToDelete.push(resolveItemDest(item));
return;
if (minify) {
data.filesToDelete.push(resolveItemDest(item) + '.map');
}
});
return data;