├── .browserslistrc ├── .gitignore ├── README.md ├── app ├── assets │ ├── images │ │ └── pierre-chatel-innocenti-1667193-unsplash.jpg │ ├── js │ │ └── all.js │ └── style │ │ └── all.scss ├── index.html └── layout.ejs ├── gulpfile.js ├── envOptions.js └── index.js ├── package-lock.json └── package.json /.browserslistrc: -------------------------------------------------------------------------------- 1 | # Browsers that we support 2 | 3 | last 5 version 4 | > 1% 5 | IE 10 # sorry -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | public 2 | node_modules 3 | .publish 4 | dist 5 | .vscode 6 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 網頁切版直播班 Gulp 範例 2 | 3 | > 使用該專案 Gulp 時,就可以不用使用其他編譯工具編譯 SCSS 或是 JavaScript 囉。 4 | 5 | ## 指令列表 6 | 7 | - `gulp` - 執行開發模式(會開啟模擬瀏覽器並監聽相關檔案) 8 | - 若沒有自動開啟瀏覽器則可手動在瀏覽器上輸入 `http://localhost:8080/` 即可。 9 | - 假使監聽功能無效的話,可以檢查一下是否修改到資料夾的名稱等。 10 | - `gulp build` - 執行編譯模式(不會開啟瀏覽器) 11 | - `gulp clean` - 清除 dist 資料夾 12 | - `gulp deploy` - 將 dist 資料夾部署至 GitHub Pages 13 | - 若無法部署到 GitHub Pages 的話,可以確定一下是否已經初始化專案等。 14 | 15 | > 請務必確保已經在本機上輸入過 `npm install -g gulp`,否則電腦會不認識 `gulp` 指令哦。 16 | 17 | ## 說明 18 | 19 | 除了 Boostrap CSS 與 Boostrap JavaScript 需要掛 CDN 之外,本身已經內建打包 jQuery 3.5.1。 20 | 21 | 若有需要調整相關路徑參數可在 `envOptions.js` 中調整,但建議不要隨意調整導致 Gulp 無法正常運行。 22 | 23 | 假使對於 Gulp 不熟悉會建議不要任意調整 `gulpfile.js` 底下的資料任一檔案,避免出現無法正常運作之問題。 24 | 25 | ## 資料夾結構 26 | 27 | - App # 原始碼 28 | - assets # 靜態資源放置處 29 | - images # 圖片放置處 30 | - js # JavaScript 放置處 31 | - style # 樣式放置處 32 | - index.html # 首頁 HTML 33 | - layout.ejs # Layout ejs 34 | - gulpfile.js # Gulp 原始碼 35 | - envOptions.js # Gulp 路徑變數 36 | - index.js # Gulp 核心原始碼 37 | 38 | ### 注意事項 39 | 40 | `assets` 底下的資料夾名稱建議不要任意修改,例如:`stlye` 改成 `styles` 又或者是 `scss` 等非原始資料夾名稱。 41 | 42 | 最主要原因是 Gulp 預設是監聽 `style`、`js`、 `images` 這幾個資料夾路徑底下的檔案,因此若任意修改名稱將可能導致 Gulp 的監聽功能失效或其他不可預期之問題發生。 43 | 44 | 若本身已經對於 Gulp 有一定掌握度則可進入 `gulpfile.js/envOptions.js` 修改相關路徑即可。 45 | 46 | Gulp 的自動更新行為是必須持續開著終端機的,因此若關閉終端機則會失去監聽與自動更新效果,因此在開專案時,請不要關閉運行中的終端機。 47 | 48 | ## 支援的監聽 49 | 50 | 目前支援 HTML、ejs、JavaScript、Images、SCSS 監聽並自動重新刷新。 51 | 52 | 圖片新增時也會自動刷新。 53 | 54 | 因此是不用使用 `Live Sass Compiler` 的 `Watch SCSS` 功能或是 `Prepros` 等工具來編譯 SCSS。 55 | 56 | 除此之外 Gulp 本身有支援模擬伺服器,因此不用再次使用一些模擬伺服器的套件,例如:`Preview on Web Server` 套件等。 57 | 58 | ## 部署 gh-pagse 流程說明 59 | 60 | 部署前請務必先將該 Gulp 原始碼上傳到 GitHub Repositories 也就是初始化 GitHub,因此通常第一步驟會輸入以下指令 61 | 62 | ```cmd 63 | git init # 若已經初始化過就可以不用輸入 64 | git add . 65 | git commit -m 'first commit' 66 | git remote add origin [GitHub Repositories Url] 67 | git push -u origin master // 僅限第一次輸入,往後只需要輸入 git push 68 | ``` 69 | 70 | 當將 Gulp 原始碼初次部署到 GitHub 之後就可以輸入 `gulp build` 進入生產模式,當生產完畢之後接下來只需要輸入 `gulp deploy` 即可完成 GitHub Pages 部署。 71 | 72 | ## 其他可能的狀況 73 | 74 | Q:Mac 環境下輸入 `npm install -g gulp` 時出現「`Permission denied`」等字眼。 75 | 76 | A:由於 Mac 在環境上的安裝是會比較嚴格的,當出現「`Permission denied`」時,可以在指令前面加上 `sudo` (`sudo npm install -g gulp`) 77 | 78 | Q: Window 環境下輸入 `gulp` 卻出現「`因為這個系統上已停用指令碼執行,所以無法載入...`」 79 | 80 | A: 後來的 Window 在終端機的權限使用上會預設是禁止使用一些指令的,因此可以參考 [這一篇](https://hsiangfeng.github.io/other/20200510/1067127387/) 文章解決。 81 | 82 | Q: 輸入 `gulp deploy` 卻出現「`TypeError: Cannot read property 0 of null`」。 83 | 84 | A: 這是一個很神奇的問題,在原套件的 issues 也有提供相關討論,因此可以參考 [這一篇](https://hsiangfeng.github.io/gulp/20191220/1507807439/) 文章解決。 85 | 86 | Q: Gulp SCSS 或是 JS 撰寫完畢並儲存檔案後 Gulp 不會重新編譯。 87 | 88 | A: 這邊的原因有可能是修改了預設 Gulp 監聽的路徑資料夾,預設是監聽 `style`、`js`、 `images` 這幾個資料夾路徑底下的檔案,因此若任意修改名稱將可能導致 Gulp 的監聽功能失效或其他不可預期之問題發生,除此之外該專案 Gulp 是監聽 `.scss` 檔案對於 `.css` 並沒有監聽自動更新的效果。 89 | 90 | Q: 其他可能的問題且無法部署到 GitHub Pages。 91 | 92 | A: 這邊問題有許多種,因此在排除上可能會比較麻煩,需要多一點耐心。 93 | 94 | - 可能沒有針對 GitHub 專案做第一次的初始化部署。 95 | - 電腦可能沒有安裝 Git(可以執行一下 `git --version` 確保有出現版本號)。 96 | - 忘記執行 `npm install` 97 | - 對於終端機的 Git 操作不熟悉(可以考慮使用 GitHub Desktop 來操作會較為方便)。 98 | - 出現「`not a git repository`」(主要是缺少了 `git init` 將目前專案初始化 Git) 99 | 100 | Q: 執行 `gulp` 之後瀏覽器沒有自動開啟。 101 | 102 | A: 關於這一點每一台電腦的瀏覽器權限都不同,因此若沒有自動開啟的話,`可以手動將 `http://localhost:8080/` 貼入到自己手動開的瀏覽器也可以哦。 103 | 104 | Q: 輸入 `gulp deploy` 之後出現 「`Message: Command filed: git pull`」提示訊息 105 | 106 | A: 這邊請麻煩刪除隱藏的資料夾「`.publish`」再重新 `gulp deploy` 就可以囉。 107 | 108 | 這種狀況通常發生在操作流程上可能不正確導致錯誤,因此打開「`.publish`」的時候會看到未編譯後的 Gulp 原始碼,正確來講該資料夾底下只會有編譯後的原始碼,如果刪除「`.publish`」之後狀況還是沒改善,那麼建議刪除「`dist`」資料夾並重新輸入 `gulp build` → `gulp deploy` 即可。 109 | 110 | Q: 以上問題都無法解決 111 | 112 | A: 建議可以查看一下自己的相關版本,以下是專案開發者的運行環境 113 | 114 | - Node v12.18.2 115 | - 實際測試 Node 12~14 都是可以運行的 116 | - 查看自己版本指令:`node -v` 117 | - Gulp 118 | - CLI version: 2.3.0 119 | - Local version: 4.0.2 120 | - 查看自己版本指令:`gulp -v` 121 | - git version 2.23.0 122 | - 查看自己版本指令:`git ---version` 123 | 124 | ## 學習資源 125 | 126 | 若對於 Gulp 有一定興趣的話,以下這邊提供學習資源 127 | 128 | - [使用 Gulp 進行網頁前端自動化](https://courses.hexschool.com/p/gulp) 129 | - [這是在講 Gulp 不是飲料是任務自動化工具這件事](https://hsiangfeng.github.io/tags/%E9%80%99%E6%98%AF%E5%9C%A8%E8%AC%9B-Gulp-%E4%B8%8D%E6%98%AF%E9%A3%B2%E6%96%99%E6%98%AF%E4%BB%BB%E5%8B%99%E8%87%AA%E5%8B%95%E5%8C%96%E5%B7%A5%E5%85%B7%E9%80%99%E4%BB%B6%E4%BA%8B/page/2/) 130 | - [試著把切版專案升級到 gulp4.0 吧](https://ithelp.ithome.com.tw/users/20104132/ironman/2921) 131 | -------------------------------------------------------------------------------- /app/assets/images/pierre-chatel-innocenti-1667193-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexschool/web-layout-training-gulp/83afd78d2062694491ba04a5375661a4450b0d91/app/assets/images/pierre-chatel-innocenti-1667193-unsplash.jpg -------------------------------------------------------------------------------- /app/assets/js/all.js: -------------------------------------------------------------------------------- 1 | console.log('Hello!'); 2 | 3 | $(document).ready(() => { 4 | console.log('HesSchool Hello!'); 5 | }); -------------------------------------------------------------------------------- /app/assets/style/all.scss: -------------------------------------------------------------------------------- 1 | $color: #00cc99; 2 | 3 | .header { 4 | height: 200px; 5 | background-color: #00cc99; 6 | } 7 | 8 | .footer { 9 | height: 200px; 10 | background-color: #00cc99; 11 | } 12 | 13 | .box { 14 | width: 100px; 15 | height: 100px; 16 | background-color: red; 17 | display: flex; 18 | transition: all 0.5s; 19 | &:hover { 20 | width: 200px; 21 | background-color: $color; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: 首頁 3 | layout: ./app/layout.ejs 4 | engine: ejs 5 | current: index 6 | --- 7 | 8 |