Buckets:
| const {series, watch, src, dest, parallel} = require('gulp'); | |
| const pump = require('pump'); | |
| const path = require('path'); | |
| const releaseUtils = require('@tryghost/release-utils'); | |
| const inquirer = require('inquirer'); | |
| const {mergeLocales} = require('@tryghost/theme-translations/build'); | |
| // gulp plugins and utils | |
| const livereload = require('gulp-livereload'); | |
| const postcss = require('gulp-postcss'); | |
| const zip = require('gulp-zip').default; | |
| const concat = require('gulp-concat'); | |
| const uglify = require('gulp-uglify'); | |
| const beeper = require('beeper'); | |
| const fs = require('fs'); | |
| // postcss plugins | |
| const autoprefixer = require('autoprefixer'); | |
| const cssnano = require('cssnano'); | |
| const easyimport = require('postcss-easy-import'); | |
| const REPO = 'TryGhost/Source'; | |
| const REPO_READONLY = 'TryGhost/Source'; | |
| const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md'); | |
| function serve(done) { | |
| livereload.listen(); | |
| done(); | |
| } | |
| const handleError = (done) => { | |
| return function (err) { | |
| if (err) { | |
| beeper(); | |
| } | |
| return done(err); | |
| }; | |
| }; | |
| function hbs(done) { | |
| pump([ | |
| src(['*.hbs', 'partials/**/*.hbs']), | |
| livereload() | |
| ], handleError(done)); | |
| } | |
| function css(done) { | |
| pump([ | |
| src('assets/css/screen.css', {sourcemaps: true}), | |
| postcss([ | |
| easyimport, | |
| autoprefixer(), | |
| cssnano() | |
| ]), | |
| dest('assets/built/', {sourcemaps: '.'}), | |
| livereload() | |
| ], handleError(done)); | |
| } | |
| function js(done) { | |
| pump([ | |
| src([ | |
| // pull in lib files first so our own code can depend on it | |
| 'assets/js/lib/*.js', | |
| 'assets/js/*.js' | |
| ], {sourcemaps: true}), | |
| concat('source.js'), | |
| uglify(), | |
| dest('assets/built/', {sourcemaps: '.'}), | |
| livereload() | |
| ], handleError(done)); | |
| } | |
| function zipper(done) { | |
| const filename = require('./package.json').name + '.zip'; | |
| pump([ | |
| src([ | |
| '**', | |
| '!node_modules', '!node_modules/**', | |
| '!dist', '!dist/**', | |
| '!yarn-error.log', | |
| '!yarn.lock', | |
| '!gulpfile.js' | |
| ]), | |
| zip(filename), | |
| dest('dist/') | |
| ], handleError(done)); | |
| } | |
| const cssWatcher = () => watch('assets/css/**', css); | |
| const jsWatcher = () => watch('assets/js/**', js); | |
| const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs); | |
| const localesWatcher = () => watch('./locales-local/**/*.json', mergeLocales()); | |
| const watcher = parallel(cssWatcher, jsWatcher, hbsWatcher, localesWatcher); | |
| const build = series(css, js, mergeLocales()); | |
| exports.build = build; | |
| exports.zip = series(build, zipper); | |
| exports.default = series(build, serve, watcher); | |
| exports.release = async () => { | |
| // @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/ | |
| // require(./package.json) can run into caching issues, this re-reads from file everytime on release | |
| let packageJSON = JSON.parse(fs.readFileSync('./package.json')); | |
| const newVersion = packageJSON.version; | |
| if (!newVersion || newVersion === '') { | |
| console.log(`Invalid version: ${newVersion}`); | |
| return; | |
| } | |
| console.log(`\nCreating release for ${newVersion}...`); | |
| const githubToken = process.env.GST_TOKEN; | |
| if (!githubToken) { | |
| console.log('Please configure your environment with a GitHub token located in GST_TOKEN'); | |
| return; | |
| } | |
| try { | |
| const prompt = inquirer.createPromptModule(); | |
| const result = await prompt([{ | |
| type: 'input', | |
| name: 'compatibleWithGhost', | |
| message: 'Which version of Ghost is it compatible with?', | |
| default: '5.67.0' | |
| }]); | |
| const compatibleWithGhost = result.compatibleWithGhost; | |
| const releasesResponse = await releaseUtils.releases.get({ | |
| userAgent: 'Source', | |
| uri: `https://api.github.com/repos/${REPO_READONLY}/releases` | |
| }); | |
| if (!releasesResponse || !releasesResponse) { | |
| console.log('No releases found. Skipping...'); | |
| return; | |
| } | |
| let previousVersion = releasesResponse[0].tag_name || releasesResponse[0].name; | |
| console.log(`Previous version: ${previousVersion}`); | |
| const changelog = new releaseUtils.Changelog({ | |
| changelogPath: CHANGELOG_PATH, | |
| folder: path.join(process.cwd(), '.') | |
| }); | |
| changelog | |
| .write({ | |
| githubRepoPath: `https://github.com/${REPO}`, | |
| lastVersion: previousVersion | |
| }) | |
| .sort() | |
| .clean(); | |
| const newReleaseResponse = await releaseUtils.releases.create({ | |
| draft: true, | |
| preRelease: false, | |
| tagName: 'v' + newVersion, | |
| releaseName: newVersion, | |
| userAgent: 'Source', | |
| uri: `https://api.github.com/repos/${REPO}/releases`, | |
| github: { | |
| token: githubToken | |
| }, | |
| content: [`**Compatible with Ghost ≥ ${compatibleWithGhost}**\n\n`], | |
| changelogPath: CHANGELOG_PATH | |
| }); | |
| console.log(`\nRelease draft generated: ${newReleaseResponse.releaseUrl}\n`); | |
| } catch (err) { | |
| console.error(err); | |
| process.exit(1); | |
| } | |
| }; | |
Xet Storage Details
- Size:
- 5.31 kB
- Xet hash:
- eff1e307f5409248cec8c0f4e5d737389c3e6e89b83a4d81b10a7ca46136c104
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.