diff --git a/Gruntfile.js b/Gruntfile.js index 74251b11e6..ce390aebe8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -267,6 +267,10 @@ module.exports = grunt => { cp.execSync("node js/scripts/prepare-lib-original"); }); + grunt.registerTask('prepare-lib', () => { + cp.execSync("node js/scripts/prepare-lib"); + }); + grunt.registerTask('chmod-folders', () => { cp.execSync( "find . -type d -exec chmod 755 {} +", @@ -443,6 +447,7 @@ module.exports = grunt => { 'prepare-lib-original', 'uglify:bundle', 'copy:frontendLib', + 'prepare-lib', 'uglify:lib', ]); diff --git a/js/scripts/prepare-lib.js b/js/scripts/prepare-lib.js new file mode 100644 index 0000000000..a6ec15b95f --- /dev/null +++ b/js/scripts/prepare-lib.js @@ -0,0 +1,53 @@ +/************************************************************************ + * This file is part of EspoCRM. + * + * EspoCRM - Open Source CRM application. + * Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko + * Website: https://www.espocrm.com + * + * EspoCRM is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EspoCRM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EspoCRM. If not, see http://www.gnu.org/licenses/. + * + * The interactive user interfaces in modified source and object code versions + * of this program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU General Public License version 3. + * + * In accordance with Section 7(b) of the GNU General Public License version 3, + * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. + ************************************************************************/ + +const fs = require('fs'); +const buildUtils = require('../build-utils'); + +const libs = require('./../../frontend/libs.json'); + +let stripSourceMappingUrl = path => { + /** @var {string} */ + let originalContents = fs.readFileSync(path, {encoding: 'utf-8'}); + + let re = /\/\/# sourceMappingURL.*/g; + + if (!originalContents.match(re)) { + return; + } + + let contents = originalContents.replaceAll(re, ''); + + fs.writeFileSync(path, contents, {encoding: 'utf-8'}); +} + +buildUtils.getCopyLibDataList(libs) + .filter(item => !item.minify) + .forEach(item => { + stripSourceMappingUrl(item.dest); + });