publish-repo
v2.0.5
Published
Publish distribution files to a seperate repository
Downloads
13
Maintainers
Readme
publish-repo
Publish distribution files to a separate repository
A CLI tool that pushes dist
to a separate repository. Intended to be used as
part of semantic-release during a tagged build on TravisCI.
Example package.json
:
{
"name": "my-app",
"scripts": {
"build": "make",
"publish-repo": "npm run build && publish-repo",
"semantic-release": "semantic-release pre && npm publish && semantic-release post"
},
"author": "Tom Vincent <[email protected]>",
"publishRepo": {
"repository": {
"url": "https://github.com/me/my-app"
},
"artefacts": [
"README.md",
"bower.json",
"dist/*"
]
}
}
Example .travis.yml
:
language: node_js
node_js:
- '0.12'
after_success:
- npm run semantic-release
- npm run publish-repo
Usage
At minimum, publish-repo expects:
dist
to exist before it is ran- To be ran within TravisCI
- The environment variable
CI_USER_TOKEN
to be set
Then add a publishRepo
block to package.json
:
"publishRepo": {
"repository": {
"url": "https://github.com/me/my-app"
},
"artefacts": [
"README.md",
"bower.json",
"dist/*"
],
"author": "Tom Vincent <[email protected]>"
}
Each property can be overridden with a command line flag. See options.
With semantic-release
Want semantic-release to build and push dist? Here's one approach:
- Initialise semantic-release with your repo as normal
- Generate a new GitHub access token (only repo/public_repo scope is required)
- Run
travis env set CI_USER_TOKEN [token]
- Add a npm build script that's suitable for your project
- Add
publish-repo
as a dev dependency - Add it as an npm script
- Call
npm run publish-repo
in Travis'safter_script
block
That's it!
See tlvince/tlvince-semantic-release-publish-repo as a working example.
Note: some versions of semantic-release-cli add a branches.except
pattern
to .travis.yml
. This must be removed as publish-repo is ran during the tagged
build.
Pro tip: create a machine/bot account on GitHub (generate a access token
for this account) and add it as a collaborator (with push access) to your repo.
Don't forget to pass --author-name
and --author-email
.
Options
--repository-url
The repository to push artefacts to. Must already exist. Defaults to
publishRepo.repository.url
.
--artefacts
A comma-separated list of files to commit/publish. Defaults to
publishRepo.artefacts
.
--author-name
The commit's author name (git config user.name
). Defaults to
publishRepo.author
. Falls back to .package.json
author
.
--author-email
The commit's author email (git config user.email
). Defaults to
publishRepo.author
. Falls back to .package.json
author
.
See also
Author
© 2015 Tom Vincent https://tlvince.com/contact
License
Released under the MIT License.