chimee-player
Version:
A complete set of H5 player
111 lines (108 loc) • 2.74 kB
JavaScript
const {version, name, author, license, dependencies} = require('../package.json');
const banner = `
/** ${camelize(name)}
* ${name} v${version}
* (c) 2017 ${author}
* Released under ${license}
*/
`;
import babel from 'rollup-plugin-babel';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import postcss from 'rollup-plugin-postcss';
import uglify from 'rollup-plugin-uglify';
import replace from 'rollup-plugin-replace';
import visualizer from 'rollup-plugin-visualizer';
// PostCSS plugins
import nested from 'postcss-nested';
import cssnano from 'cssnano';
const babelConfig = {
cjs: {
presets: [
['latest', {es2015: {modules: false}}]
],
plugins: ['transform-runtime'],
exclude: 'node_modules/**',
runtimeHelpers: true,
babelrc: false
},
es: {
presets: [
['latest', {es2015: {modules: false}}]
],
plugins: ['transform-runtime'],
exclude: 'node_modules/**',
runtimeHelpers: true,
babelrc: false
},
umd: {
presets: ['es2015-rollup'],
plugins: ['transform-runtime'],
exclude: 'node_modules/**',
runtimeHelpers: true,
babelrc: false
},
iife: {
presets: ['es2015-rollup'],
plugins: [],
babelrc: false
},
min: {
presets: ['es2015-rollup'],
plugins: ['transform-runtime'],
exclude: 'node_modules/**',
runtimeHelpers: true,
babelrc: false
}
};
const externalRegExp = new RegExp(Object.keys(dependencies).join('|'));
let idN = 0;
export default function (modeConf) {
const mode = modeConf.output.format;
const config = {
input: 'src/index.js',
banner,
external (id) {
/*if(/chimee\-helper/.test(id)){
idN++;
console.log(idN, 'id:', id);
}*/
return !/min|umd|iife/.test(mode) && externalRegExp.test(id) && !/\.css$/.test(id);
},
plugins: [
postcss({
plugins: [
nested(),
cssnano()
],
extensions: ['.css']
}),
babel(babelConfig[mode]),
resolve(),
commonjs(),
replace({
'process.env.NODE_ENV': JSON.stringify('production')
}),
visualizer({
filename: `bundle-size/${mode}.html`,
})
]
};
modeConf.uglify && config.plugins.push(uglify());
delete modeConf.uglify;
Object.assign(config, modeConf);
if(mode === 'umd') {
config.name = camelize(name);
}
return config;
};
/**
* camelize any string, e.g hello world -> helloWorld
* @param {string} str only accept string!
* @return {string} camelize string
*/
function camelize (str) {
return str.replace(/(^|[^a-zA-Z]+)([a-zA-Z])/g, function (match, spilt, initials, index) {
return initials.toUpperCase();
});
}