area-selection-js
Version:
Simple and easy area selection library for image/video cropping
55 lines (47 loc) • 1.72 kB
JavaScript
/**
* Babel Starter Kit (https://www.kriasoft.com/babel-starter-kit)
*
* Copyright © 2015-2016 Kriasoft, LLC. All rights reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE.txt file in the root directory of this source tree.
*/
;
const fs = require('fs');
const del = require('del');
const rollup = require('rollup');
const babel = require('rollup-plugin-babel');
const resolve = require('rollup-plugin-node-resolve');
const commonjs = require('rollup-plugin-commonjs');
const pkg = require('../package.json');
let promise = Promise.resolve();
// Clean up the output directory
promise = promise.then(() => del(['dist/*']));
// Compile source code into a distributable format with Babel
['es', 'cjs', 'umd'].forEach((format) => {
promise = promise.then(() => rollup.rollup({
input: 'src/index.js',
external: Object.keys(pkg.dependencies),
plugins: [
resolve(),
babel(Object.assign(pkg.babel, {
babelrc: false,
exclude: 'node_modules/**',
externalHelpers: false,
runtimeHelpers: true,
presets: pkg.babel.presets.map(x => (x === 'latest' ? ['latest', { es2015: { modules: false } }] : x)),
})),
commonjs(),
],
})).then(bundle => bundle.write({
file: `dist/${format === 'cjs' ? 'area-selection' : `area-selection.${format}`}.js`,
format,
sourceMap: true,
name: format === 'umd' ? 'AreaSelection' : undefined,
}));
});
// Copy files
promise = promise.then(() => {
fs.writeFileSync('dist/area-selection.css', fs.readFileSync('src/area-selection.css', 'utf-8'), 'utf-8');
});
promise.catch(err => console.error(err.stack)); // eslint-disable-line no-console