go get like npm
在 Go 下面想要安裝套件,可以像是用 node.js 的 npm 安裝不加 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 變數,以我目前的了解會用暫時覆蓋的方式,有比較好的方式再來更新