123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- const fs = require('fs');
- const path = require('path');
- const uglify = require('uglify-js');
- const rollup = require('rollup');
- const buble = require('rollup-plugin-buble');
- const version = require('./package.json').version;
- const banner =
- `/*!
- * perfect-scrollbar v${version}
- * (c) ${new Date().getFullYear()} Hyunje Jun
- * @license MIT
- */`;
- if (!fs.existsSync('dist')) {
- fs.mkdirSync('dist')
- }
- const resolve = _path => path.resolve(__dirname, _path);
- const entry = resolve('src/index.js');
- build([
- {
- dest: resolve('dist/perfect-scrollbar.js'),
- format: 'umd',
- },
- {
- dest: resolve('dist/perfect-scrollbar.min.js'),
- format: 'umd',
- },
- {
- dest: resolve('dist/perfect-scrollbar.common.js'),
- format: 'cjs'
- },
- {
- dest: resolve('dist/perfect-scrollbar.esm.js'),
- format: 'es'
- }
- ]);
- function build(builds) {
- let built = 0;
- const total = builds.length;
- const next = () => {
- buildEntry(builds[built]).then(() => {
- built++;
- if (built < total) {
- next();
- }
- }).catch((e) => console.log(e));
- }
- next();
- }
- function buildEntry(opts) {
- const isProd = /min\.js$/.test(opts.dest);
- return rollup
- .rollup({
- input: entry,
- plugins: [buble()],
- })
- .then(bundle => bundle.generate({
- file: opts.dest,
- format: opts.format,
- name: 'PerfectScrollbar',
- banner,
- }))
- .then(({code}) => {
- if (isProd) {
- code = (banner ? banner + '\n' : '') + uglify.minify(code, {
- output: {
- ascii_only: true
- },
- compress: {
- pure_funcs: ['makeMap']
- }
- }).code;
- }
- return write(opts.dest, code);
- })
- }
- function write(dest, code) {
- return new Promise((resolve, reject) => {
- fs.writeFile(dest, code, err => {
- if (err) {
- return reject(err);
- }
- console.log(path.relative(process.cwd(), dest));
- resolve();
- });
- });
- }
|