Package Exports
- @drubin/verdaccio-gitlab
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@drubin/verdaccio-gitlab) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Verdaccio-GitLab
Use GitLab Community Edition as authentication provider for the private npm registry verdaccio, the sinopia fork.
The main goal and difference to other sinopia/verdaccio plugins is:
- no admin token required
- user authenticates with Personal Access Token
- owned groups (no subgroups) are added to the user
- publish packages if package scope or name is an owned group name
This is experimental!
Use it
git clone https://github.com/bufferoverflow/verdaccio-gitlab.git
cd verdaccio-gitlab
npm install
npm startverdaccio is now up and running, now configure the following within
your ~/.config/verdaccio/config.yaml to use this plugin
auth:
gitlab:
url: https://gitlab.com
packages:
'@*/*':
# scoped packages
access: $all
publish: $authenticated
proxy: npmjs
gitlab: true
'**':
access: $all
publish: $authenticated
proxy: npmjs
gitlab: truerestart verdaccio and authenticate with your credentials:
- gitlab username
- Personal Access Token
on the web ui http://localhost:4873 or via npm
npm login --registry http://localhost:4873and publish packages
npm publish --registry http://localhost:4873NOTE: you need a fresh login, so that verdaccio recognizes your owned groups
Docker
git clone https://github.com/bufferoverflow/verdaccio-gitlab.git
cd verdaccio-gitlab
docker-compose up --build -d- login with user
rootand passwordverdaccioon Gitlab via http://localhost:50080 - create a Personal Access Token
- login to the npm registry http://localhost:4873 via browser
- publish your packages via command line
Development
Setup development environment, npm start will do:
cd node_modules/verdaccio
npm link ../../
cd ../../Run one of the following command to create a release:
npm run release:major
npm run release:minor
npm run release:patchfinally run
npm publishTodo
- authenticate with personal access token
- compare provided user name and GitLab username
- get user groups from GitLab
- authorize publish based on group ownership
- Docker Compose setup of GitLab and Verdaccio
- how to handle group owner ship changes? timeout?
- use openid connect for web ui
- improve linting, eslint vs. jshint vs. babel ,etc.
- pass repolinter
- make it perfect ;-r