scripts/release.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
const fs = require('fs'); const path = require('path'); const terser = require('terser'); const readme = './README.md'; const overview = './docs/md/overview.md'; const app = './docs/js/app.js'; const tutorial = './docs/md/tutorial.md'; const package = './package.json'; const h3 = './h3.js'; const h3min = './h3.min.js'; const h3map = './h3.js.map'; const pkg = JSON.parse(fs.readFileSync(package, 'utf8')); // Update h3.js let h3Data = fs.readFileSync(h3, 'utf8'); const notice = h3Data.match(/\/\*\*((.|\n|\r)+?)\*\//gm)[0]; const newNotice = notice .replace(/v\d+\.\d+\.\d+/, `v${pkg.version}`) .replace(/\"[^"]+\"/, `"${pkg.versionName}"`) .replace(/Copyright \d+/, `Copyright ${new Date().getFullYear()}`); h3Data = h3Data.replace(notice, newNotice); fs.writeFileSync(h3, h3Data); const minified = terser.minify(h3Data, { sourceMap: { filename: 'h3.js', url: 'h3.js.map' }, }); fs.writeFileSync(h3min, minified.code); fs.writeFileSync(h3map, minified.map); // Update README.md let readmeData = fs.readFileSync(readme, 'utf8'); readmeData = readmeData.replace(/v\d+\.\d+\.\d+/, `v${pkg.version}`); readmeData = readmeData.replace(/Download v\d+\.\d+\.\d+ \([^)]+\)/, `Download v${pkg.version} (${pkg.versionName})`); readmeData = readmeData.replace(/v\d+\.\d+\.\d+\/h3\.min\.js/, `v${pkg.version}/h3.min.js`); fs.writeFileSync(readme, readmeData); // Remove badges and copy to overview.md const overviewData = readmeData.replace(/[^\*]+\*\*\*\s+/m, ''); fs.writeFileSync(overview, overviewData); // Update app.js and tutorial.md const updateCode = (file) => { let data = fs.readFileSync(file, 'utf8'); data = data.replace(/v\d+\.\d+\.\d+/, `v${pkg.version}`); data = data.replace(/“.+“/, `“${pkg.versionName}“`); fs.writeFileSync(file, data); }; updateCode(app); updateCode(tutorial); // Update package.json const packageData = JSON.parse(fs.readFileSync(package, 'utf8')); packageData.version = pkg.version; fs.writeFileSync(package, JSON.stringify(packageData, null, 2)); |