in gsoc2022/seagrid-rich-client/molview/Gruntfile.js [105:367]
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
clean: ['build', 'img'],
uglify:
{
base:
{
options:
{
banner: '/*! MolView JavaScript Base libraries build on <%= grunt.template.today("yyyy-mm-dd") %> */\n',
compress: { drop_console: true }
},
src: JSUnits.base.src,
dest: 'build/molview-base.min.js'
},
applib:
{
options:
{
banner: '/*! MolView JavaScript App libraries build on <%= grunt.template.today("yyyy-mm-dd") %> */\n',
compress: { drop_console: true }
},
src: JSUnits.applib.src,
dest: 'build/molview-applib.min.js'
},
datasets:
{
options:
{
banner: '/*! MolView JavaScript Datasets build on <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
src: JSUnits.datasets.src,
dest: 'build/molview-datasets.min.js'
},
core:
{
options:
{
banner: '/*! MolView JavaScript Core build on <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
src: JSUnits.core.src,
dest: 'build/molview-core.min.js'
},
molpad:
{
options:
{
banner: '/*! MolView JavaScript Sketcher build on <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
src: JSUnits.molpad.src,
dest: 'build/molview-molpad.min.js'
},
app:
{
options:
{
banner: '/*! MolView JavaScript App build on <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
src: JSUnits.app.src,
dest: 'build/molview-app.min.js'
},
embed:
{
options:
{
banner: '/*! MolView JavaScript Embed build on <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
src: JSUnits.embed.src,
dest: 'build/molview-embed.min.js'
}
},
replace:
{
strict:
{
src: 'build/*.min.js',
dest: 'build/',
replacements: [{ from: '"use strict";', to: '' }]
}
},
less:
{
app:
{
options:
{
compress: true,
cleancss: true
},
src: [
'src/less/vars.less',
'src/less/form.less',
'src/less/global.less',
'src/less/layout.less',
'src/less/menu.less',
'src/less/menu-theme.less',
'src/less/sketcher.less',
'src/less/model.less',
'src/less/search.less',
'src/less/messages.less',
'src/less/dialogs.less',
'src/less/help.less',
'src/less/periodictable.less',
'src/less/chemicaldata.less',
'src/less/autocomplete.less',
'src/less/welcome.less'
],
dest: 'build/molview-app.min.css'
},
embed:
{
options:
{
compress: true,
cleancss: true
},
src: [
'src/less/var.less',
'src/less/model.less',
'src/less/messages.less',
'src/less/embed.less'
],
dest: 'build/molview-embed.min.css'
},
desktop:
{
options:
{
compress: true,
cleancss: true
},
src: [
'src/less/var.less',
'src/less/menu-desktop.less',
'src/less/smooth.less',
'src/less/hover.less',
'src/less/active.less'
],
dest: 'build/molview-desktop.min.css'
},
touch:
{
options:
{
compress: true,
cleancss: true
},
src: [
'src/less/var.less',
'src/less/menu-touch.less',
'src/less/active.less'
],
dest: 'build/molview-touch.min.css'
},
page:
{
options:
{
compress: true,
cleancss: true
},
src: [
'src/less/vars.less',
'src/less/page.less'
],
dest: 'build/molview-page.min.css'
},
},
cssmin:
{
app:
{
src: 'build/molview-app.min.css',
dest: 'build/molview-app.min.css'
},
embed:
{
src: 'build/molview-embed.min.css',
dest: 'build/molview-embed.min.css'
},
desktop:
{
src: 'build/molview-desktop.min.css',
dest: 'build/molview-desktop.min.css'
},
touch:
{
src: 'build/molview-touch.min.css',
dest: 'build/molview-touch.min.css'
},
mobile:
{
src: 'build/molview-mobile.min.css',
dest: 'build/molview-mobile.min.css'
},
page:
{
src: 'build/molview-page.min.css',
dest: 'build/molview-page.min.css'
},
},
svgmin:
{
options:
{
plugins: [
{ removeViewBox: false },
{ removeUselessStrokeAndFill: false }
]
},
dist:
{
files: [
{
expand: true,
cwd: 'src/svg',
src: ['action/*', 'bond/*', 'frag/*', 'layout/*', 'misc/*'],
dest: 'img/',
ext: '.svg'
},
{ src: 'src/svg/icon/mark.svg', dest: 'img/mark.svg' }
]
}
},
copy:
{
img:
{
files: [
{ expand: true, flatten: true, src: 'docs/img/*', dest: 'img/help/', filter: 'isFile' },
{ src: 'src/svg/icon/agpl.svg', dest: 'img/agpl.svg' },
{ src: 'src/svg/icon/48.svg', dest: 'img/logo.svg' },
{ src: 'src/svg/icon/brand.svg', dest: 'img/brand.svg' }
]
}
},
watch:
{
less: {
files: ['src/less/*.less'],
tasks: ['less'],
},
base: { files: JSUnits.base.src, tasks: ['uglify:base', 'replace:strict'] },
applib: { files: JSUnits.applib.src, tasks: ['uglify:applib'] },
datasets: { files: JSUnits.datasets.src, tasks: ['uglify:datasets'] },
core: { files: JSUnits.core.src, tasks: ['uglify:core'] },
molpad: { files: JSUnits.molpad.src, tasks: ['uglify:molpad'] },
app: { files: JSUnits.app.src, tasks: ['uglify:app'] },
embed: { files: JSUnits.embed.src, tasks: ['uglify:embed'] },
}
});
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-text-replace');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-svgmin');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('jsminify', ['uglify', 'replace']);
grunt.registerTask('default', ['clean', 'uglify', 'replace', 'less', 'svgmin', 'copy']);
};