You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.5 KiB
95 lines
2.5 KiB
// const typescript = require('@rollup/plugin-typescript');
|
|
const typescript = require('rollup-plugin-typescript2');
|
|
const rollup = require('rollup');
|
|
const path = require('path');
|
|
const processs = require('process');
|
|
const chalk = require('chalk');
|
|
const progress = require('./progress');
|
|
const UglifyJS = require('uglify-js');
|
|
const fs = require('fs');
|
|
|
|
function current() {
|
|
return (new Date()).toLocaleString();
|
|
}
|
|
|
|
const inputOption = {
|
|
input: path.resolve(__dirname, '../index.ts'),
|
|
plugins: [typescript({
|
|
tsconfigOverride: {
|
|
compilerOptions: {
|
|
// Rollup don't use CommonJS by default.
|
|
module: 'ES2015',
|
|
sourceMap: true,
|
|
// Use the esm d.ts
|
|
declaration: false
|
|
}
|
|
}
|
|
}), progress({
|
|
scope: {
|
|
total: 0
|
|
}
|
|
})]
|
|
};
|
|
|
|
const outputOption = {
|
|
format: 'umd',
|
|
file: path.resolve(__dirname, '../dist/zrender.js'),
|
|
sourcemap: true,
|
|
name: 'zrender'
|
|
};
|
|
|
|
function minify(outPath) {
|
|
const fileMinPath = outPath.replace(/.js$/, '.min.js');
|
|
const code = fs.readFileSync(outPath, 'utf-8');
|
|
const uglifyResult = UglifyJS.minify(code);
|
|
if (uglifyResult.error) {
|
|
throw new Error(uglifyResult.error);
|
|
}
|
|
fs.writeFileSync(fileMinPath, uglifyResult.code, 'utf-8');
|
|
}
|
|
|
|
if (processs.argv.includes('--watch')) {
|
|
const watcher = rollup.watch({
|
|
...inputOption,
|
|
output: [outputOption],
|
|
watch: {
|
|
clearScreen: true
|
|
}
|
|
});
|
|
watcher.on('event', event => {
|
|
switch(event.code) {
|
|
// case 'START':
|
|
// console.log(chalk.green('Begin to watch'));
|
|
// break;
|
|
case 'BUNDLE_START':
|
|
console.log(
|
|
chalk.gray(current()),
|
|
chalk.blue('File changed. Begin to bundle')
|
|
);
|
|
break;
|
|
case 'BUNDLE_END':
|
|
console.log(
|
|
chalk.gray(current()),
|
|
chalk.green('Finished bundle')
|
|
);
|
|
break;
|
|
case 'ERROR':
|
|
console.log(
|
|
chalk.gray(current()),
|
|
chalk.red(event.error)
|
|
);
|
|
break;
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
rollup.rollup({
|
|
...inputOption
|
|
}).then(bundle => {
|
|
bundle.write(outputOption).then(function () {
|
|
if (process.argv.indexOf('--minify') >= 0) {
|
|
minify(outputOption.file);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|