- node 12+
- npx
- Nuxt.js
本專案使用 nuxt-i18n ,共有兩種設定雙語的方式:
- lazy-load,主要用來載入文案等需時常更新的資料,檔案都放在
~/lang
- vue-i18n-loader,定義在各自的 component 中,主要用來存放較少更動的文字,如選單、按鈕用字等
- 若有需要跨 component 共用的翻譯設定,也請一併寫在
~/lang
中,方便管理
- 文章請到官網文案集散地閱讀是否有需要的文章
- 點選 官網文案集散地 的任意 Airtable 連結,取得 Airtable 的使用權限
- 到 Airtable API ,取得自己 Airtable 帳號的 API key 後,在 .env 寫上
AIRTABLE_API_KEY=<MY API KEY>
- 用
npm run sync:all
下載所有表格 + 長篇文案 + 入選稿件 - 所有下載後的檔案,都會放在
~/assets/articles
與~/assets/tables
底下,並會 commit 到 git 裡 - 若要新增文案,須手動加入
~/lang/zh.js
與~/lang/en.js
中
- 稿件資料放在
~/assets/proposal.json
裡,資料格式基本上和徵件網站相同 - 徵件網站資料結構,請見
~/tools/projectFields.js
- 額外欄位包括:
-
timeSheet
:{ "議程開始時間": "2020-12-05T13:00", "議程日期": "2020-12-05", "議程長度": 30, "議程預設標題": "<支援雙語>", "分類主題": "<支援雙語>", "議程場地": "<支援雙語>", "主持人": { "display_name": "<支援雙語>", "organization": "<支援雙語>", "avatar_url": "cache/xxx.jpg", "bio": "<支援雙語>" }
-
isPseudo
: 是否是虛擬議程,例如開幕、午休等,沒有說明,也不會有獨立議程說明頁的格子 -
updatedAt
,createdAt
: 議程最後更新時間
-
proposal.json
裡_en
結尾的欄位,在有內容的情況下,皆會被當作英語翻譯使用,使用時請去掉_en
,如summary_en
改用summary
即可
本專案使用 dotenv,你可以將想要使用的環境變數,加到專案根目錄的 .env
中,就會自動被帶入環境變數中。
- 必填
- 目前尚無必填的環境變數
- 選填
DOMAIN
- 產生靜態檔案時 (nuxt generate
) 使用,確保 social tagging 指到正確的網址ROUER_BASE
- 網站不是跑在根目錄時使用,會影響 nuxt.router.base,預設為 ''AIRTABLE_API_KEY
- Airtable 存取金鑰,使用方式請見文案資訊SERVER_PORT
,SERVER_HOST
- 伺服器綁定設定,使用方式請見開發流程
- 本專案使用加料版的 Github flow ,提供測試與正式兩種網站,也就是說:
- 開發時請在自己的電腦開 feature branch ,用 PR merge 進 master ,保持 master 在最新的功能與內容
- 所有進到 master 的 commit ,都會被編到 Github page 上,當作內部預覽
- 所有開頭為
release-
的 tag ,都會被編到 production-pages branch ,發佈在正式網站
- 確定程式碼遵守 nuxt 的 eslint 規範,細節請見 .eslintrs.js ,或使用支援 linter 的編輯器,例如 VS Code,否則 PR 會失敗呦
- 若需要自訂開發時的 Interface 與 Port ,請在 .env 裡加上:
SERVER_PORT
,預設為 3000SERVER_HOST
,預設為 localhost
- 本專案使用 scss + styleResource
- 所有放在
~/assets/scss/variables/
底下的 scss 都會被自動 import 到所有 single file component 中
# 安裝套件
npm install
# 下載所有文案
npm run sync:all
# 把開發網站跑在 localhost:3000
npm run dev
請參考 http://localhost:3000/example ,內附文章與表格的使用方式
- 善用
this.$t('keyword')
- 連結請改用
this.localePath('/original/path/to/go')
- 其他撇步請見官網文件
目前 Staging 已納入 CICD :
- 網站網址: https://g0v.github.io/summit2020/
- 若發現網頁和想像的不同,請見 Travis CI
# 安裝套件
npm install
# 將靜態網站編譯至 dist/
npm run generate:staging
目前 Production 已納入 CICD :
- 網站網址:https://summit.g0v.tw/2020/
- 使用
release-*
tag 當作發布標記,最新而且開頭為release-
的 tag ,會被發佈到上述網址 - 若發現網頁和想像的不同,請見
- 是否有在 Github release 裡
- Travis CI 編輯是否成功
- 主網站 的 2020 資料夾是否使用預期的 commit hash
發佈流程:
# 確定在最新的 staging ,或在對的 hot fix commit
git checkout master
git pull master
# 在本地端建立 tag ,命名建議為 release-<MMDD>.<revision>
git tag release-0608.0
# 將 tag 推上 remote
git push -u origin release-<MMDD>.<revision>
# 等 5 分鐘後,就可在 https://summit.g0v.tw/2020/ 看到更新
本此議程亦支援通報各會議場地的客滿狀況。
- 使用 Bottender 實做 Messenger 聊天機器人,供工人回報客滿與否
- 使用 Featheres.js 實做公開查詢的 RESTful API
詳情請見 room-reporter-backend
資料夾