🔥
This commit is contained in:
37
tools/deployToGitHubPages.js
Normal file
37
tools/deployToGitHubPages.js
Normal file
@@ -0,0 +1,37 @@
|
||||
import GitRepo from 'git-repository';
|
||||
import run from './run';
|
||||
import build from './build';
|
||||
|
||||
const remote = {
|
||||
name: 'github',
|
||||
url: 'https://github.com/{user}/{repo}.git',
|
||||
branch: 'gh-pages',
|
||||
};
|
||||
|
||||
/**
|
||||
* Deploy the contents of the `/build/public` folder to GitHub Pages.
|
||||
*/
|
||||
async function deployToGitHubPages() {
|
||||
// Initialize a new Git repository inside the `/build` folder
|
||||
// if it doesn't exist yet
|
||||
const repo = await GitRepo.open('build/public', { init: true });
|
||||
await repo.setRemote(remote.name, remote.url);
|
||||
const isRefExists = await repo.hasRef(remote.url, remote.branch);
|
||||
if (isRefExists) {
|
||||
await repo.fetch(remote.name);
|
||||
await repo.reset(`${remote.name}/${remote.branch}`, { hard: true });
|
||||
await repo.clean({ force: true });
|
||||
}
|
||||
|
||||
// Build the project in RELEASE mode which
|
||||
// generates optimized and minimized bundles
|
||||
process.argv.push('--static', '--release');
|
||||
await run(build);
|
||||
|
||||
// Push the contents of the build folder to the remote server via Git
|
||||
await repo.add('--all .');
|
||||
await repo.commit(`Update ${new Date().toISOString()}`);
|
||||
await repo.push(remote.name, `master:${remote.branch}`);
|
||||
}
|
||||
|
||||
export default deployToGitHubPages;
|
||||
Reference in New Issue
Block a user