vue-gitlab-api
A deadly simple Vue.js plugin to consume GitLab API.
Head to the extensive JSDoc API documentation for vue-gitlab-api, or keep on reading for an easy process to integrate it in your application.
Using it
Install and import
npm install vue-gitlab-api
In your main application JS file (typically main.js
if you are using vue-cli webpack template), simply use the plugin:
import VueResource from 'vue-resource'
Vue.use(VueResource)
import GitLabAPI from 'vue-gitlab-api'
Vue.use(GitLabAPI, { url: 'https://gitlab.com', token: 'user Private Token or Personal Access Token' })
You can configure application wide options while Vue.use
'ing this plugin:
Name | Description |
---|
url | your GitLab instance URL (defaults to https://gitlab.com) |
token | your GitLab user Private Token or Personal Access Token use to connect to the API |
Consume GitLab API
From anywhere now, you can simply consume GitLab API:
Vue.GitLabAPI.get('/projects', {}, [this.myGitLabData, 'projects'])
You can also use it in your .vue
components with this.GitLabAPI
:
this.GitLabAPI.get('/projects', {}, [this.myGitLabData, 'projects'])
That was it! Now that you are bootstrapped in, have a look at all the methods available to you in the extensive JSDoc API documentation available on these auto-generated GitLab Pages.
Important: if you want your filled-in property this.myGitLabData.projects
to be reactive "the Vue.js way", you MUST define this variable as a data in your components or vues, with a default value of an empty object (read myGitLabData: {}
). See how to do it on a vue component on this example:
<template>
<div>
<p>Projects grabbed: {{ projectsCount }}</p>
</div>
</template>
<script>
export default {
data () {
return {
myGitLabData: {}
}
},
mounted: function () {
this.GitLabAPI.get('projects', {}, [this.myGitLabData, 'projects'])
},
computed: {
projectsCount: function () {
if (this.myGitLabData.projects) {
return this.myGitLabData.projects.length
}
return 'none yet...'
}
}
}
</script>
This is due to the fact Vue does not allow to add new reactive properties dynamically. Read more about it on the awesome Vue.js guide.
During your application workflow, you could want to change GitLab instance URL, and/or user authentication token. These methods will let you do it easily:
this.GitLabAPI.setUrl('https://your.gitlab-instance.com')
this.GitLabAPI.setToken('other user Private Token or Personal Access Token')
Vuex store module
Using Vuex? You can attach vue-gitlab-api Vuex module to your application store. Within one of your .vue
components, simply register it before you using it from your application:
this.GitLabAPI.registerStore(this.$store)
this.$store.state.GitLabAPI.downloading
Here are Vuex states
provided by vue-gitlab-api to your application:
Vuex state | Type | Description |
---|
downloading | Boolean | Defines if vue-gitlab-api is currently downloading |
running | Number | Count vue-gitlab-api requests running now |
Have a look at Vuex for more details, or read on this complete example:
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
import VueResource from 'vue-resource'
Vue.use(VueResource)
import GitLabAPI from 'vue-gitlab-api'
Vue.use(GitLabAPI, { url: 'https://gitlab.com', token: 'user Private Token' })
const store = new Vuex.Store({})
const app = new Vue({
el: '#app',
mounted: {
this.GitLabAPI.registerStore(store)
},
computed: {
downloading: function () {
if (typeof store.state.GitLabAPI !== 'undefined') {
return store.state.GitLabAPI.downloading
} else {
return false
}
}
}
})
Contributing
Initial scaffolding was done with vue-cli webpack template. For detailed explanation on how things work, checkout the guide and docs for vue-loader.
Simply said, one can start working on its own customized version of vue-gitlab-api in no time:
npm install
npm run unit
./node_modules/.bin/jsdoc src/GitLabAPI.js
npm run dev
What's next?
Without any obligation nor due date, one could expect to be done this non-exhaustive list of improvements grouped on issues labeled Feature
.
You can read on the Changelog too, for historical and upcoming new features, changes, deprecations, removed features, bug and security fixes.
Support
Your are free to open an issue right in this GitLab repository whether you should be facing a problem or a bug. Please advise this is not a commercial product, so one could experience random response time. Positive, friendly and productive conversations are expected on the issues. Screenshots and steps to reproduce are highly appreciated. Chances are you may get your issue solved if you follow these simple guidelines.
Credits
License
The vue-gitlab-api plugin is distributed under the MIT License (MIT). Please have a look at the dependencies licenses if you plan on using, building, or distributing this plugin.