mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 18:22:24 +08:00
Add guide and tooling for local packages registry setup (#26110)
This commit is contained in:
3
devenv/local-npm/conf/nginx/Dockerfile
Normal file
3
devenv/local-npm/conf/nginx/Dockerfile
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
FROM tutum/nginx
|
||||||
|
RUN rm /etc/nginx/sites-enabled/default
|
||||||
|
ADD sites-enabled /etc/nginx/sites-enabled
|
14
devenv/local-npm/conf/nginx/sites-enabled/verdaccio-conf
Normal file
14
devenv/local-npm/conf/nginx/sites-enabled/verdaccio-conf
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
server {
|
||||||
|
listen 80 default_server;
|
||||||
|
access_log /var/log/nginx/verdaccio.log;
|
||||||
|
charset utf-8;
|
||||||
|
location / {
|
||||||
|
proxy_pass http://grafana-npm.local:4873/;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-NginX-Proxy true;
|
||||||
|
proxy_ssl_session_reuse off;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_redirect off;
|
||||||
|
}
|
||||||
|
}
|
26
devenv/local-npm/docker-compose.yaml
Normal file
26
devenv/local-npm/docker-compose.yaml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
version: '2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
verdaccio:
|
||||||
|
image: verdaccio/verdaccio:4
|
||||||
|
container_name: verdaccio_root_path
|
||||||
|
ports:
|
||||||
|
- "4873:4873"
|
||||||
|
volumes:
|
||||||
|
- verdaccio:/verdaccio
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
restart: always
|
||||||
|
build: conf/nginx
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
volumes:
|
||||||
|
- /www/public
|
||||||
|
volumes_from:
|
||||||
|
- verdaccio
|
||||||
|
links:
|
||||||
|
- verdaccio:verdaccio
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
verdaccio:
|
||||||
|
driver: local
|
@ -25,6 +25,7 @@
|
|||||||
"packages:publishCanary": "lerna publish from-package --contents dist --dist-tag canary --yes",
|
"packages:publishCanary": "lerna publish from-package --contents dist --dist-tag canary --yes",
|
||||||
"packages:publishLatest": "lerna publish from-package --contents dist --yes",
|
"packages:publishLatest": "lerna publish from-package --contents dist --yes",
|
||||||
"packages:publishNext": "lerna publish from-package --contents dist --dist-tag next --yes",
|
"packages:publishNext": "lerna publish from-package --contents dist --dist-tag next --yes",
|
||||||
|
"packages:publishDev": "lerna publish from-package --contents dist --dist-tag dev --yes --registry http://grafana-npm.local:4873 --force-publish=*",
|
||||||
"packages:typecheck": "lerna run typecheck",
|
"packages:typecheck": "lerna run typecheck",
|
||||||
"precommit": "grafana-toolkit precommit",
|
"precommit": "grafana-toolkit precommit",
|
||||||
"prettier:check": "prettier --list-different \"**/*.{ts,tsx,scss}\"",
|
"prettier:check": "prettier --list-different \"**/*.{ts,tsx,scss}\"",
|
||||||
|
@ -52,3 +52,42 @@ To build individual packages, run:
|
|||||||
```
|
```
|
||||||
grafana-toolkit package:build --scope=<ui|toolkit|runtime|data>
|
grafana-toolkit package:build --scope=<ui|toolkit|runtime|data>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Setting up @grafana/* packages for local development
|
||||||
|
|
||||||
|
A known issue with @grafana/* packages is that a lot of times we discover problems on canary channel(see [versioning overview](#Versioning)) when the version was already pushed to npm.
|
||||||
|
|
||||||
|
We can easily avoid that by setting up a local packages registry and test the packages before actually publishing to npm.
|
||||||
|
|
||||||
|
In this guide you will set up [Verdaccio](https://verdaccio.org/) registry locally to fake npm registry. This will enable testing @grafana/* packages without the need for pushing to master.
|
||||||
|
|
||||||
|
#### Setting up local npm registry
|
||||||
|
|
||||||
|
From your terminal:
|
||||||
|
1. Modify `/etc/hosts` file and add the following entry: ```127.0.0.1 grafana-npm.local```
|
||||||
|
2. Navigate to `devenv/local-npm` directory.
|
||||||
|
3. Run `docker-compose up`. This will start your local npm registry, available at http://grafana-npm.local:4873/
|
||||||
|
4. Run `npm login --registry=http://grafana-npm.local:4873 --scope=@grafana` . This will allow you to publish any @grafana/* package into the local registry.
|
||||||
|
5. Run `npm config set @grafana:registry http://grafana-npm.local:4873`. This will config your npm to install @grafana scoped packages from your local registry.
|
||||||
|
|
||||||
|
#### Publishing packages to local npm registry
|
||||||
|
|
||||||
|
You need to follow [manual packages release procedure](#manual-release). The only difference is you need to run `yarn packages:publishDev` task in order to publish to you local registry.
|
||||||
|
|
||||||
|
From your terminal:
|
||||||
|
1. Run `yarn packages:prepare`.
|
||||||
|
2. Commit changes in package.json and lerna.json files
|
||||||
|
3. Build packages: `yarn packages:build`
|
||||||
|
4. Run `yarn packages:publishDev`.
|
||||||
|
5. Navigate to http://grafana-npm.local:4873 and verify that version was published
|
||||||
|
|
||||||
|
Locally published packages will be published under `dev` channel, so in your plugin package.json file you can use that channel. For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
// plugin's package.json
|
||||||
|
|
||||||
|
{
|
||||||
|
...
|
||||||
|
"@grafana/data": "dev"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Reference in New Issue
Block a user