123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- var fs = require('fs');
- var rollup = require('rollup');
- var uglify = require('uglify-js');
- var babel = require('rollup-plugin-babel');
- var execSync = require('child_process').execSync;
- bundle({
- minified: 'dist/jspdf.min.js',
- debug: 'dist/jspdf.debug.js'
- });
- // Monkey patching adler32 and filesaver
- function monkeyPatch() {
- return {
- transform: function (code, id) {
- var file = id.split('/').pop();
- if (file === 'adler32cs.js') {
- code = code.replace(/this, function/g, 'jsPDF, function');
- code = code.replace(/require\('buffer'\)/g, '{}');
- }
- return code;
- }
- }
- }
- // Rollup removes local variables unless used within a module.
- // This plugin makes sure specified local variables are preserved
- // and kept local. This plugin wouldn't be necessary if es2015
- // modules would be used.
- function rawjs(opts) {
- opts = opts || {};
- return {
- transform: function (code, id) {
- var variable = opts[id.split('/').pop()];
- if (!variable) return code;
- var keepStr = '/*rollup-keeper-start*/window.tmp=' + variable + ';/*rollup-keeper-end*/';
- return code + keepStr;
- },
- transformBundle: function (code) {
- for (var file in opts) {
- var r = new RegExp(opts[file] + '\\$\\d+', 'g');
- code = code.replace(r, opts[file]);
- }
- var re = /\/\*rollup-keeper-start\*\/.*\/\*rollup-keeper-end\*\//g;
- return code.replace(re, '');
- }
- }
- }
- function bundle(paths) {
- rollup.rollup({
- entry: './main.js',
- plugins: [
- monkeyPatch(),
- rawjs({
- 'jspdf.js': 'jsPDF',
- 'filesaver.tmp.js': 'saveAs',
- 'deflate.js': 'Deflater',
- 'zlib.js': 'FlateStream',
- 'css_colors.js': 'CssColors',
- 'html2pdf.js': 'html2pdf'
- }),
- babel({
- presets: ['es2015-rollup'],
- exclude: ['node_modules/**', 'libs/**']
- })
- ]
- }).then(function (bundle) {
- var code = bundle.generate({format: 'umd', moduleName: 'jspdf'}).code;
- code = code.replace(/Permission\s+is\s+hereby\s+granted[\S\s]+?IN\s+THE\s+SOFTWARE\./, 'Licensed under the MIT License');
- code = code.replace(/Permission\s+is\s+hereby\s+granted[\S\s]+?IN\s+THE\s+SOFTWARE\./g, '');
- fs.writeFileSync(paths.debug, renew(code));
- var minified = uglify.minify(code, {fromString: true, output: {comments: /@preserve|@license|copyright/i}});
- fs.writeFileSync(paths.minified, renew(minified.code));
- }).catch(function (err) {
- console.error(err);
- });
- }
- function renew(code) {
- var date = new Date().toISOString();
- var version = require('./package.json').version;
- var whoami = execSync('whoami').toString().trim();
- var commit = execSync('git rev-parse --short=10 HEAD').toString().trim();
- code = code.replace('${versionID}', version + ' Built on ' + date);
- code = code.replace('${commitID}', commit);
- code = code.replace(/1\.0\.0-trunk/, version + ' ' + date + ':' + whoami);
- return code;
- }
|