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