使用 Hbuild 快速構建生成現代化前端專案

MJI發表於2019-03-03

About Hbuild


vuepack


Hbuild is a modern project starter kit
which allows you to build your own project by cli rapidly

在前端專案日漸複雜的今天,搭建腳手架,配置專案環境等都有著一定的成本,有沒有更簡單且一勞永逸的方法呢?

Hbuild是一套結合cli命令列以及專案模板的工具,通過命令列的方式實現快速構建,使得整套開發的成本大為下降,同時它還提供了三套專案模板(h5,vue全家桶,react),可在本地環境自由定製。(由於時間原因,react全家桶,更多的模板引擎,前處理器等後續支援)

Hbuild使用hbuild-cli命令列工具,全域性註冊後可快速生成專案啟動套件。你可以使用Hbuild生成一個h5專案,或者vue專案(預設搭配vue-router,可自由選擇vuex),或者react專案。該套件包含如下特點:

Features

  • Vue2 / Vue-Router / Vuex
  • Hot reloading for single-file components
  • Webpack 2
  • ES6
  • LESS
  • SASS
  • React
  • zepto
  • autoprefixer
  • mock server
  • eslint
  • Support for building multi-page applications
  • offline mode support
  • file hash

其中zepto是預設全域性引入的,可直接使用。h5專案預設引入ejs模板引擎。預設支援Babel轉碼。支援HMR。支援檔案hash,以解決快取問題。

Get Started

You'd better have node >=4 and npm >=3 and gulp >=3.9 installed:

$ npm install -g hbuild-cli
$ hbuild init new-project 
$ //or use
$ h init new-project //support short command
$ cd new-project
$ npm install || yarn

# edit files and start developing
$ npm run dev
# bundle all scripts and styles for production use
$ npm run prod

# lint your js code
$ npm run eslint複製程式碼

Local Templates

when you clone this project,you can use a template on your local file system:

$ git clone git@github.com:hawx1993/hbuild.git
$ hbuild init ./hbuild new-project
//or
$ h init ./hbuild new-project複製程式碼

命令

$ npm run dev;//本地開發模式,連線mock資料
$ npm run dev-daily;//本地開發模式,連線daily日常環境資料
$ npm run dev-pre;//本地開發模式,連線預發環境資料
$ npm run daily;//線上日常構建模式,連線daily日常環境資料
$ npm run pre;//線上預發構建模式,連線預發環境資料
$ npm run prod;//線上構建模式,連線線上環境資料
$ npm run eslint;//js程式碼審查,預設檢查除lib資料夾下的js程式碼複製程式碼

使用如下命令列快速生成前端專案啟動套件:

使用 Hbuild 快速構建生成現代化前端專案

編譯

1.js程式碼預設採用Babel編譯,webpack打包構建。
2.編譯後的html檔案預設輸出到build/pages目錄下,html檔名採用其在src/pages下的父級目錄的檔名
3.編譯後的靜態資原始檔(圖片,字型,js檔案等)存放到build/static目錄下,編譯支援檔案hash,解決快取問題
4.支援程式碼熱替換,熱替換失敗會自動重新整理整個頁面

HTML

1.h5專案的頁面預設採用ejs模板引擎和zepto,可直接使用。
2.當你執行釋出線上的命令時,html和js程式碼會被壓縮
3.當你在pages下新建一個目錄時,html檔案需要手動配置一下靜態資源的引用

CSS

1.支援css前處理器LESS和SASS,後續逐步支援其他css處理器

2.預設採用css-in-js的方式,可在hbuild.config.js檔案中配置是否單獨提取css,提取出的css檔名稱預設為:[name].extract.css

3.支援 螢幕適配方案,採用media-query+rem的方式,預設在common.less檔案中

4.支援postcss和autoprefixer

其他

  • mock:mock 資料只需要介面URI路徑和mock目錄保持一致即可
  • 介面:介面如需根據環境來替換,需在hbuild.config.js檔案和common/js/config檔案進行配置
  • 支援多入口檔案,可在pages下新建目錄,檔名需以index開頭

  • 字串替換:$$_CDNPATH_$$會被編譯替換為build/static/hash串目錄

  • 入口檔案:腳手架預設會讀取pages目錄下的index開頭的js檔案為入口檔案,名稱是寫死的

  • 修改預設資料夾的名稱,需要在hbuild.config.js檔案就對應檔案變數做修改

  • 提取CSS以及sourceMap功能只在非開發模式下進行。

目錄結構

.
├── README.md
├── gulpfile.js                 # gulp檔案
├── hbuild.config.js            # 腳手架配置檔案
├── mock                        # mock資料目錄,保持和介面一樣的路徑即可
│   └── h5
├── package.json    
├── src                         # 原始檔 
│   ├── assets                  # 靜態資源目錄,存放圖片或字型
│   │   └── logo.ico
│   ├── common                  # 共用程式碼目錄,css目錄存放公用css部分,js同理
│   │   ├── css
│   │   │   ├── common.less
│   │   │   └── common.scss
│   │   └── js
│   │       ├── api.js          # api檔案
│   │       ├── config.js       # 配置檔案
│   │       └── util.js         # 工具函式檔案,可將公用方法存放於此
│   ├── components              # 元件
│   │   ├── counter             # 計數器vue元件
│   │   │   └── index.vue
│   │   ├── index               # vue元件的入口檔案
│   │   │   └── index.vue
│   │   ├── meta                # h5 meta頭部資訊模組
│   │   │   └── index.html
│   │   ├── router              # vue路由模組
│   │   │   └── router.js
│   │   └── store               # vuex store模組
│   │       └── store.js
│   ├── lib                     # 第三方庫 
│   └── pages                   # 頁面    
│       └── index               # 首頁目錄,可在pages目錄下新建多個目錄結構,作為多入口檔案
│           ├── index.html
│           ├── index.js        # index.js/index.jsx檔案為webpack的入口檔案
│           ├── index.jsx
│           ├── index.less      # 樣式檔案在js檔案中引入,可設定是否提取出css檔案     
│           ├── index.scss
│           └── module          # 頁面模板模組,可在index.js/jsx檔案引入該模組檔案
│               ├── main.jsx
│               └── main.tpl.html
├── webpack.config.js
└── yarn.lock複製程式碼

License

MIT © hawx1993

專案地址: github.com/hawx1993/hb…

相關文章