go get like npm

Go 下面想要安裝套件,可以像是用 node.jsnpm 安裝不加 global 的參數,做本地端的安裝嗎?

建立 shell script gopm 放在您的 $PATH 中的路徑

#!/bin/bash
# Uasge:
# gopm get some package from github
# gopm run yourmain.go
OLDGOPATH=“$GOPATH”
export GOPATH=$PWD
go $*
export GOPATH=“$OLDGOPATH”

或是都是在本地端開發,不太在意覆蓋原本的 GOPATH,直接像是加在 .bashrc 的環境裡

alias gopm=‘export GOPATH=pwd && go’

只要用 GOPATH 這一個環境變數,就可以達到了,所以這樣設定以後,執行的時候,就會用目前的資料夾當作,GOPATH ,套件也就都會安裝在執行時的目錄

執行程式測試的時候也一樣,假設叫 gopm ,就用 gopm run yourmain.go 就可以了

安裝需要的套件和 go get 一樣,例如在所在專案路徑安裝所有相依套件,原本打

go get

會裝到 GOROOT 路徑下

換成打

gopm get

因為加了目前專案路徑($PWD)為 GOPATH ,所以安裝到目前的資料夾下


PS: gopm 只是我自己隨便取的,文件及 source code 裡是有提到,不可以和 GOROOT 同一個資料夾,不過這不是廢話嗎 XD
UPDATE: 在 mail list 上面當小白後,GOPATH 不要去覆蓋他,會影響到整的 GO 環境 build 變數,以我目前的了解會用暫時覆蓋的方式,有比較好的方式再來更新

comments powered by Disqus