Warp/node_modules/mark.js/build/rollup.config.js

143 lines
3.5 KiB
JavaScript
Raw Normal View History

2024-01-05 12:14:38 +00:00
import pkg from '../package.json';
import handlebars from 'handlebars';
import * as fs from 'fs';
import * as path from 'path';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import cleanup from 'rollup-plugin-cleanup';
import babel from 'rollup-plugin-babel';
import uglify from 'rollup-plugin-uglify';
import {minify} from 'uglify-es';
// Shared config
const output = {
name: (() => {
const str = pkg.name.split('/').pop().replace('.js', '');
return str.charAt(0).toUpperCase() + str.slice(1);
})(),
file: pkg.main,
format: 'umd',
extend: true,
banner: handlebars.compile(fs.readFileSync(path.join(
__dirname, 'templates/copyright.hbs'
), 'utf8'))({
name: pkg.name.split('/').pop(),
version: `v${pkg.version}`,
homepage: pkg.homepage,
author: pkg.author.name,
license: pkg.license,
year: (() => {
const startYear = 2014,
year = new Date().getFullYear();
return year > startYear ? `${startYear}${year}` : year;
})()
})
},
outputJquery = Object.assign({}, output, {
file: (() => {
const spl = pkg.main.split('/');
spl[spl.length - 1] = `jquery.${spl[spl.length - 1]}`;
return spl.join('/');
})(),
globals: {
'jquery': 'jQuery'
}
}),
externalJquery = ['jquery'],
plugins = [
// for external dependencies (just in case)
resolve(),
commonjs(),
// remove non-license comments
cleanup({
comments: /^!/,
maxEmptyLines: 0
})
],
pluginsES5 = (() => {
const newPlugins = plugins.slice();
newPlugins.push(babel({
exclude: 'node_modules/**',
'presets': [
['env', {
'modules': false
}]
],
'plugins': [
'external-helpers',
'transform-object-assign'
]
}));
return newPlugins;
})(),
minifyPlugins = (() => {
const newPlugins = plugins.slice();
newPlugins.push(uglify({
warnings: true,
output: {
comments: /^!/
}
}, minify));
return newPlugins;
})(),
minifyPluginsES5 = (() => {
const newPlugins = pluginsES5.slice();
newPlugins.push(uglify({
warnings: true,
output: {
comments: /^!/
}
}, minify));
return newPlugins;
})();
// Actual config export
export default [{
input: 'src/vanilla.js',
output: Object.assign({}, output, {
file: output.file.replace('.js', '.es6.js')
}),
plugins
}, {
input: 'src/jquery.js',
output: Object.assign({}, outputJquery, {
file: outputJquery.file.replace('.js', '.es6.js')
}),
plugins,
external: externalJquery
}, {
input: 'src/vanilla.js',
output,
plugins: pluginsES5
}, {
input: 'src/jquery.js',
output: outputJquery,
plugins: pluginsES5,
external: externalJquery
}, {
input: 'src/vanilla.js',
output: Object.assign({}, output, {
file: output.file.replace('.js', '.es6.min.js')
}),
plugins: minifyPlugins,
}, {
input: 'src/jquery.js',
output: Object.assign({}, outputJquery, {
file: outputJquery.file.replace('.js', '.es6.min.js')
}),
plugins: minifyPlugins,
external: externalJquery
}, {
input: 'src/vanilla.js',
output: Object.assign({}, output, {
file: output.file.replace('.js', '.min.js')
}),
plugins: minifyPluginsES5
}, {
input: 'src/jquery.js',
output: Object.assign({}, outputJquery, {
file: outputJquery.file.replace('.js', '.min.js')
}),
plugins: minifyPluginsES5,
external: externalJquery
}];