grafana官方地址: https://github.com/grafana/grafana
開發文檔:http://docs.grafana.org/project/building_from_source/
grafana官方的readme文檔中也有開發文檔,但是沒有打包的過程,開發文檔中有。
按照官方的文檔的順序:
一. 環境准備:
mac下打包的話,不能在centos下運行,只能在centos下打包。
所以我在mac下開發,centos下打包。
當然,也可以在window下開發,把生成好的build文件夾和配置文件替換一下,也是可以的
需要安裝go, nodejs等
提前把GOPATH設置好。
二.構建后端
go get github.com/grafana/grafana cd $GOPATH/src/github.com/grafana/grafana go run build.go setup go run build.go build
第一句go get github.com/grafana/grafana:
把源碼下載到$GOPATH/src/github.com/grafana/grafana路徑下,所以GOPATH要設置好
第三句:go run build.go setup,執行build.go文件的setup:我們看一下它里的操作:
第四句:go run build.go build,執行build:
也就是執行這兩個命令:
三. 構建前端:
npm install -g yarn yarn install --pure-lockfile yarn watch
全局安裝yarn
通過yarn進行依賴包的安裝
下面是幾種yarn install的區別:也可以查看文檔:https://yarnpkg.com/lang/zh-hans/docs/cli/install/
yarn install //安裝package.json里所有包,並將包及它的所有依賴項保存進yarn.lock yarn install --flat //安裝一個包的單一版本 yarn install --force //強制重新下載所有包 yarn install --production //只安裝dependencies里的包 yarn install --no-lockfile //不讀取或生成yarn.lock yarn install --pure-lockfile //不生成yarn.lock
yarn watch就是調用了npm中定義的腳本:
這時,如果我們修改前端的文件,會看到有控制台有更新了。
為了看到效果,我們可以運行一下
./bin/<os>-<architecture>/grafana-server
控制台的輸出會告訴我們,打開瀏覽器: http://localhost:3000
但是我發現,如果我們修改了前端的文件,雖然webpack監控到了文件修改,但是頁面並沒有自動更新,手動刷新一下也不行,
不知道為什么了,只能重新運行上述命令,再刷新頁面才可以看到效果,有知道的同學希望可以指導一下。
文檔中了如果是開發模塊下可以安裝:go get github.com/Unknwon/bra
運行:bra run,但在我這里不起作用,報bra不識別命令。
雖然有一點問題,但是我們能自定義開發:
我們的要求是修改登錄頁:
它對應的css文件:
開發完成,接下來,就是要打包了:
執行命令:go run build.go build package
執行成功后會在dis目錄下生成壓縮文件:
或者可以生成rpm文件:
執行命令:
go run build.go pkg-rpm
安裝過程會報fpm 不是可執行的命令
需要手動安裝fpm
gem install fpm
安裝過程報無法連接ssl ruby的一個地址,就是那個地址應該是被牆了,
添加一個阿里雲的地址:
gem sources -a http://mirrors.aliyun.com/rubygems/ // 移除原生的ruby倉庫 gem sources --remove http://rubygems.org/ // 再次執行安裝即可
上述命令會在 grafana/dist目錄下面生成rpm
結尾的文件,即為rpm包
如果在構建匱乏打包過程中遇到報錯,如類型轉換問題,依賴包問題,那就把node_modules文件更刪除,重新來遍,一般可以解決問題,因為源碼肯定沒有問題
如果想要修改title的話,可以修改index.templat.html文件 和config.ts文件中的配置window_title_prefix
const defaults = { datasources: {}, windowTitlePrefix: 'Grafana - ', panels: {}, newPanelTitle: 'Panel Title', playlist_timespan: '1m', unsaved_changes_warning: true, appSubUrl: '', buildInfo: { version: 'v1.0', commit: '1', env: 'production', isEnterprise: false, }, }; _.extend(this, defaults, options);
css文件存儲在下列文件中:
pages中對應着各個頁面的css文件
dark主題和light主題的顏色配置分別是_variables.*.scss文件中