diff --git a/build/build.js b/build/build.js index 1c773db4..0de78682 100644 --- a/build/build.js +++ b/build/build.js @@ -1,13 +1,13 @@ -const rollup = require('rollup'); -const buble = require('rollup-plugin-buble'); -const commonjs = require('rollup-plugin-commonjs'); -const nodeResolve = require('rollup-plugin-node-resolve'); -const { terser } = require('rollup-plugin-terser'); -const replace = require('rollup-plugin-replace'); -const isProd = process.env.NODE_ENV === 'production'; -const version = process.env.VERSION || require('../package.json').version; -const chokidar = require('chokidar'); -const path = require('path'); +const rollup = require('rollup') +const buble = require('rollup-plugin-buble') +const commonjs = require('rollup-plugin-commonjs') +const nodeResolve = require('rollup-plugin-node-resolve') +const { uglify } = require('rollup-plugin-uglify') +const replace = require('rollup-plugin-replace') +const isProd = process.env.NODE_ENV === 'production' +const version = process.env.VERSION || require('../package.json').version +const chokidar = require('chokidar') +const path = require('path') /** * @param {{ @@ -24,96 +24,89 @@ async function build(opts) { plugins: (opts.plugins || []).concat([ buble({ transforms: { - dangerousForOf: true, - }, - }), + dangerousForOf: true + }}), commonjs(), nodeResolve(), replace({ __VERSION__: version, - 'process.env.SSR': false, - }), + 'process.env.SSR': false + }) ]), onwarn: function (message) { if (message.code === 'UNRESOLVED_IMPORT') { throw new Error( `Could not resolve module ` + - message.source + - `. Try running 'npm install' or using rollup's 'external' option if this is an external dependency. ` + - `Module ${message.source} is imported in ${message.importer}` - ); + message.source + + `. Try running 'npm install' or using rollup's 'external' option if this is an external dependency. ` + + `Module ${message.source} is imported in ${message.importer}` + ) } - }, + } }) .then(function (bundle) { - var dest = 'lib/' + (opts.output || opts.input); + var dest = 'lib/' + (opts.output || opts.input) - console.log(dest); + console.log(dest) return bundle.write({ format: 'iife', - output: opts.globalName ? { name: opts.globalName } : {}, + output: opts.globalName ? {name: opts.globalName} : {}, file: dest, - strict: false, - }); - }); + strict: false + }) + }) } async function buildCore() { - const promises = []; + const promises = [] - promises.push( - build({ - input: 'src/core/index.js', - output: 'docsify.js', - }) - ); + promises.push(build({ + input: 'src/core/index.js', + output: 'docsify.js', + })) if (isProd) { - promises.push( - build({ - input: 'src/core/index.js', - output: 'docsify.min.js', - plugins: [terser()], - }) - ); + promises.push(build({ + input: 'src/core/index.js', + output: 'docsify.min.js', + plugins: [uglify()] + })) } - await Promise.all(promises); + await Promise.all(promises) } async function buildAllPlugin() { var plugins = [ - { name: 'search', input: 'search/index.js' }, - { name: 'ga', input: 'ga.js' }, - { name: 'matomo', input: 'matomo.js' }, - { name: 'emoji', input: 'emoji.js' }, - { name: 'external-script', input: 'external-script.js' }, - { name: 'front-matter', input: 'front-matter/index.js' }, - { name: 'zoom-image', input: 'zoom-image.js' }, - { name: 'disqus', input: 'disqus.js' }, - { name: 'gitalk', input: 'gitalk.js' }, - ]; + {name: 'search', input: 'search/index.js'}, + {name: 'ga', input: 'ga.js'}, + {name: 'matomo', input: 'matomo.js'}, + {name: 'emoji', input: 'emoji.js'}, + {name: 'external-script', input: 'external-script.js'}, + {name: 'front-matter', input: 'front-matter/index.js'}, + {name: 'zoom-image', input: 'zoom-image.js'}, + {name: 'disqus', input: 'disqus.js'}, + {name: 'gitalk', input: 'gitalk.js'} + ] const promises = plugins.map(item => { return build({ input: 'src/plugins/' + item.input, - output: 'plugins/' + item.name + '.js', - }); - }); + output: 'plugins/' + item.name + '.js' + }) + }) if (isProd) { plugins.forEach(item => { - promises.push( - build({ - input: 'src/plugins/' + item.input, - output: 'plugins/' + item.name + '.min.js', - plugins: [terser()], - }) - ); - }); + promises.push(build({ + input: 'src/plugins/' + item.input, + output: 'plugins/' + item.name + '.min.js', + plugins: [uglify()] + })) + }) } - await Promise.all(promises); + await Promise.all(promises) } async function main() { @@ -123,37 +116,41 @@ async function main() { atomic: true, awaitWriteFinish: { stabilityThreshold: 1000, - pollInterval: 100, - }, + pollInterval: 100 + } }) .on('change', p => { - console.log('[watch] ', p); - const dirs = p.split(path.sep); + console.log('[watch] ', p) + const dirs = p.split(path.sep) if (dirs[1] === 'core') { - buildCore(); + buildCore() } else if (dirs[2]) { - const name = path.basename(dirs[2], '.js'); + const name = path.basename(dirs[2], '.js') const input = `src/plugins/${name}${ /\.js/.test(dirs[2]) ? '' : '/index' - }.js`; + }.js` build({ input, - output: 'plugins/' + name + '.js', - }); + output: 'plugins/' + name + '.js' + }) } }) .on('ready', () => { - console.log('[start]'); - buildCore(); - buildAllPlugin(); - }); + console.log('[start]') + buildCore() + buildAllPlugin() + }) } else { - await Promise.all([buildCore(), buildAllPlugin()]); + await Promise.all([ + buildCore(), + buildAllPlugin() + ]) } } -main().catch(e => { - console.error(e); - process.exit(1); -}); +main().catch((e) => { + console.error(e) + process.exit(1) +}) + diff --git a/package-lock.json b/package-lock.json index 5c3b8f2d..af6faa5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,7 +55,7 @@ "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-replace": "^2.2.0", - "rollup-plugin-terser": "^5.3.1", + "rollup-plugin-uglify": "^6.0.4", "serve-handler": "^6.1.2", "stylus": "^0.54.5", "vue2": "npm:vue@^2.6.12", @@ -20510,15 +20510,6 @@ "node": ">=8" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -21380,23 +21371,22 @@ "estree-walker": "^0.6.1" } }, - "node_modules/rollup-plugin-terser": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", - "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "node_modules/rollup-plugin-uglify": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.4.tgz", + "integrity": "sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^4.0.0", - "terser": "^4.6.2" + "@babel/code-frame": "^7.0.0", + "jest-worker": "^24.0.0", + "serialize-javascript": "^2.1.2", + "uglify-js": "^3.4.9" }, "peerDependencies": { - "rollup": ">=0.66.0 <3" + "rollup": ">=0.66.0 <2" } }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "node_modules/rollup-plugin-uglify/node_modules/jest-worker": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", @@ -21409,25 +21399,7 @@ "node": ">= 6" } }, - "node_modules/rollup-plugin-terser/node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/supports-color": { + "node_modules/rollup-plugin-uglify/node_modules/supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", @@ -21691,6 +21663,12 @@ "node": ">= 0.6" } }, + "node_modules/serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, "node_modules/serve-handler": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", @@ -23369,38 +23347,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -23857,7 +23803,6 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==", "dev": true, - "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -41118,15 +41063,6 @@ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -41851,17 +41787,16 @@ } } }, - "rollup-plugin-terser": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", - "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "rollup-plugin-uglify": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.4.tgz", + "integrity": "sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^4.0.0", - "terser": "^4.6.2" + "@babel/code-frame": "^7.0.0", + "jest-worker": "^24.0.0", + "serialize-javascript": "^2.1.2", + "uglify-js": "^3.4.9" }, "dependencies": { "jest-worker": { @@ -41874,24 +41809,6 @@ "supports-color": "^6.1.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -42102,6 +42019,12 @@ } } }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, "serve-handler": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", @@ -43457,31 +43380,6 @@ } } }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -43840,8 +43738,7 @@ "version": "3.14.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==", - "dev": true, - "optional": true + "dev": true }, "uid-number": { "version": "0.0.6", diff --git a/package.json b/package.json index d7e56dca..5246a4ef 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-replace": "^2.2.0", - "rollup-plugin-terser": "^5.3.1", + "rollup-plugin-uglify": "^6.0.4", "serve-handler": "^6.1.2", "stylus": "^0.54.5", "vue2": "npm:vue@^2.6.12",