mirror of
https://github.com/imezx/Warp.git
synced 2025-04-24 23:20:02 +00:00
143 lines
No EOL
3.5 KiB
JavaScript
143 lines
No EOL
3.5 KiB
JavaScript
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
|
||
}]; |