123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- // const typescript = require('@rollup/plugin-typescript');
- const typescript = require('rollup-plugin-typescript2');
- const replace = require('@rollup/plugin-replace');
- 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();
- }
- function createInputOption(env, isWatch) {
- return {
- input: path.resolve(__dirname, '../index.ts'),
- plugins: [
- typescript({
- clean: !isWatch,
- tsconfigOverride: {
- compilerOptions: {
- // Rollup don't use CommonJS by default.
- module: 'ES2015',
- sourceMap: true,
- // Use the esm d.ts
- declaration: false
- }
- }
- }),
- replace({
- preventAssignment: true,
- 'process.env.NODE_ENV': JSON.stringify(env)
- }),
- progress({
- scope: {
- total: 0
- }
- })
- ]
- };
- }
- const outputOption = {
- format: 'umd',
- file: path.resolve(__dirname, '../dist/zrender.js'),
- sourcemap: true,
- name: 'zrender'
- };
- function minify(outPath) {
- const code = fs.readFileSync(outPath, 'utf-8');
- const uglifyResult = UglifyJS.minify(code);
- if (uglifyResult.error) {
- throw new Error(uglifyResult.error);
- }
- fs.writeFileSync(outPath, uglifyResult.code, 'utf-8');
- }
- if (processs.argv.includes('--watch')) {
- const watcher = rollup.watch({
- ...createInputOption('development', true),
- 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 {
- // Unminified
- rollup.rollup({
- ...createInputOption('development', false)
- }).then(bundle => {
- bundle.write(outputOption)
- .then(() => {
- // Minified
- if (process.argv.indexOf('--minify') >= 0) {
- rollup.rollup({
- ...createInputOption('production', false)
- }).then(bundle => {
- const file = outputOption.file.replace(/.js$/, '.min.js');
- bundle.write(Object.assign(outputOption, {
- file,
- sourcemap: false
- })).then(function () {
- minify(file);
- });
- });
- }
- });
- });
- }
|