From a0c7c873839361efffacc276a2d0bfe224769ede Mon Sep 17 00:00:00 2001 From: Ahmad Luthfi Masruri Date: Thu, 25 Mar 2021 18:51:43 +0700 Subject: [PATCH] feat: :sparkles: add prebuild configuration override current package.json version with the next version using semantic-release --- package-lock.json | 50 ++++++++++++++++++++++++++++++++++++++++------ package.json | 7 ++++--- prebuild.config.ts | 48 ++++++++++++++++++++++++++++++++++++++++++++ rollup.config.ts | 12 ++++++----- 4 files changed, 103 insertions(+), 14 deletions(-) create mode 100644 prebuild.config.ts diff --git a/package-lock.json b/package-lock.json index fc2814d3..c1a85555 100644 --- a/package-lock.json +++ b/package-lock.json @@ -891,6 +891,12 @@ "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -1203,6 +1209,12 @@ "yaml": "^1.10.0" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1398,6 +1410,12 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -2268,12 +2286,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, "lodash.capitalize": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", @@ -2360,6 +2372,12 @@ } } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "map-obj": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.0.tgz", @@ -7269,6 +7287,20 @@ "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", "dev": true }, + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + }, "tslib": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", @@ -7458,6 +7490,12 @@ "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", "dev": true }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, "z-schema": { "version": "3.18.4", "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", diff --git a/package.json b/package.json index d26e1d34..a0b92668 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,8 @@ "types": "dist/vue-quill.d.ts", "scripts": { "lib:dev": " npm run theme:dev && rollup -c rollup.config.ts -w", - "lib:build": "npm run theme:build && rollup -c rollup.config.ts && npm run lib:types", + "lib:prebuild": "npx ts-node prebuild.config.ts", + "lib:build": "npm run theme:build && npm run lib:prebuild && rollup -c rollup.config.ts && npm run lib:types", "lib:types": "api-extractor run --local --verbose", "docs:dev": "cd docs && npm run dev", "docs:build": "cd docs && npm run build", @@ -72,7 +73,6 @@ "@types/node": "^14.14.35", "@types/quill": "^2.0.5", "csso": "^4.2.0", - "lodash.camelcase": "^4.3.0", "pascalcase": "^1.0.0", "quill-delta": "^4.2.2", "rollup": "^2.42.3", @@ -83,6 +83,7 @@ "rollup-plugin-typescript2": "^0.30.0", "semantic-release": "^17.4.2", "stylus": "^0.54.8", + "ts-node": "^9.1.1", "typescript": "^4.2.3" } -} \ No newline at end of file +} diff --git a/prebuild.config.ts b/prebuild.config.ts new file mode 100644 index 00000000..c676531f --- /dev/null +++ b/prebuild.config.ts @@ -0,0 +1,48 @@ +const semanticRelease = require('semantic-release'); +const releaserc = require('./.releaserc.json') +const pkg = require('./package.json') + +const getNextVersion = async (): Promise => { + try { + const result = await semanticRelease({ + // Core options + branches: releaserc.branches, + repositoryUrl: pkg.repository.url, + dryRun: true, + ci: false, + plugins: ['@semantic-release/commit-analyzer'] + }); + + console.log("PROCESS_ENV_CI ---->>>>>>>>>>", process.env.CI); + + if (result) { + const { lastRelease, commits, nextRelease } = result; + console.log(`Published ${nextRelease.type} release version ${nextRelease.version} containing ${commits.length} commits.`); + if (lastRelease.version) console.log(`The last release was "${lastRelease.version}".`); + return nextRelease.version + } else { + console.log('No release published.'); + } + } catch (err) { + console.error('The automated release failed with %O', err) + } + return "" +} + +const fs = require('fs'); +const csso = require('csso'); +const packageConfigs = async () => { + return { + version: await getNextVersion() + } +} + +const prebuildPkg = 'temp/prebuild-package.json' +if (!fs.existsSync("temp")) fs.mkdirSync("temp"); +packageConfigs().then((config) => { + const content = JSON.stringify(config) + fs.writeFile(prebuildPkg, content, (err: any) => { + if (err) throw err; + console.log('empty.js created'); + }) +}) \ No newline at end of file diff --git a/rollup.config.ts b/rollup.config.ts index 905447ee..29fc08a5 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -7,9 +7,11 @@ import pascalcase from 'pascalcase' import copy from 'rollup-plugin-copy' const pkg = require('./package.json') +const prebuildPkg = require('./temp/prebuild-package.json') +Object.assign(pkg, prebuildPkg) + // get all or any character after '/' in this case 'vue-quill' const name = pkg.name.match(/[^/]*$/)[0] -// const name = "vue-quill" function getAuthors(pkg) { const { contributors, author } = pkg @@ -25,10 +27,10 @@ function getAuthors(pkg) { } const banner = `/*! - * ${pkg.name} v${pkg.version} - * (c) ${new Date().getFullYear()} ${getAuthors(pkg)} - * @license MIT - */` + * ${pkg.name} v${pkg.version} + * (c) ${new Date().getFullYear()} ${getAuthors(pkg)} + * @license MIT + */` // ensure TS checks only once for each build let hasTSChecked = false