Automatically or manually deploy build artifacts to a Git repository. The tool works awesome with semantic-release and any CI service.
npm install --save-dev deploy-to-git
Configuration for the tool needs to be placed at
config.deployToGit object inside
repository- a repository
branch- a branch of the repository where you want to push the artifacts
folder- a folder where artifacts are generated by the build and where the repository is cloned
script- a script which runs the build
commit- commit text
user- commitee information for Git - an object with keys
beforePushScript(optional) - a command that should be run after a commit (e. g. add needed git tags).
Substrings started with
$ are replaced by corresponding environment variables.
Let's say you want to deploy artifacts to branch called
artifacts. Let's say used build tool compiles the artifacts to
build folder via NPM script called
build-my-app. You'll need:
artifactsbranch manually and remove all files from it (because you probably create the branch copying main branch contents). Push it to remote repository.
- Add README or whatever you want to have at this branch.
.gitignoreof your main branch.
"scripts":"deploy": "deploy-to-git""build-my-app": "a-build-script""config":"deployToGit":"repository": "email@example.com:owner/your-repo.git""branch": "artifacts""folder": "build""script": "npm run build-my-app""commit": "Automatic commit text""user":"email": "firstname.lastname@example.org""name": "Your name"
That's it. When you run
npm run deploy the tool does the following:
- Clone the repository to
- Run script
npm run build-my-appwhich creates/replaces files at
- Commit and push changes.
build folder before
For more info check out index.js.
To run it on Travis CI use the following format of
https://$GH_TOKEN@github.com/owner/your-repo.git. You can generate GH_TOKEN at Github settings and add it to Travis CI manually. For more info just google it ("generate github token", "add environment variable to Travis") :)
"deploy": "deploy-to-git", "semantic-release": "semantic-release pre && npm run deploy && npm publish && semantic-release post",
Tip: You can use a release version in a commit message:
"commit": "Publising $npm_package_version",