重要的事情說三遍jquery
https://github.com/sayll/avalon-webpack-startwebpack
webpack2腳手架正式版,一個多資源統籌的腳手架。
本項目使用avalon2
做爲演示框架。
爲兼容低版本瀏覽器,我也是強烈推薦一下它。市面上應該也算惟一可以支持到IE8如下的MVVM框架了吧。git
服務端使用Koa。須要注意的是,只有一個目的那就是提供了webpack-dev-middleware
和 webpack-hot-middleware
(代碼熱替換)。使用自定義的Koa程序替換webpack-dev-server,讓它更容易實現universal 渲染和爲了避免使這個包過於龐大。github
針對不一樣的loader採用了多線程編譯,極大的加快了編譯速度。web
使用webpack.DllReferencePlugin打包框架和庫。加快編譯與打包速度。npm
啓動新技術tree-shaking瀏覽器
Babel被配置babel-plugin-transform-runtime可讓代碼更優化。
css的模塊化,預處理器的編譯。(支持sass,scss,less,postcss
)
針對低版本瀏覽器和其餘瀏覽器內核的特殊性,啓用autoprefixer自動添加瀏覽器前綴
針對移動開發,有獨特的處理方案。(具體文檔等待補充)
每次修改都會生成新的文件名,防止舊樣式緩存帶來的影響。(與JS間作了特殊處理,經過JS引入的CSS不會因JS改變而改變它的hash值)
針對開發模式啓用修改自動刷新頁面。(作了特殊處理,發佈模式將獲得優化)
支持ES6的最新特性
模塊化,可才用ES6的import,也可用AMD規範的require
每次修改都會生成新的文件名,防止舊腳本緩存帶來的影響。(與CSS間作了特殊處理,經過JS引入的CSS不會因CSS改變而改變它的hash值)
快速編譯,自動刷新。
將經常使用的框架和庫進行單獨打包。(Dll)防止重複引用,致使打包文件臃腫。
提供公共腳本的文件入口,此文件將被全部頁面自動引用。(可設置全局變量,引入公共的庫。如Jquery)
支持單頁應用和多頁應用的混合開發。
自動引入頁面的CSS和JS文件。無需手動設置URL。(全部文件hash的改變都會致使文件名改變,這裏的資源引用全由內部自動完成)
若有使用經常使用的框架和庫進行單獨打包。(Dll),將須要單獨引用dll的vendor.js;
確認好你的環境配置,而後就能夠開始如下步驟。
$ git clone https://github.com/sayll/avalon-webpack-start.git $ cd avalon-webpack-start $ npm install # Install project dependencies $ npm start # Compile and launch
若是一切順利,就能正常打開端口:http://localhost:1000/
開發過程當中,你用得最多的會是npm start
,可是這裏還有不少其它的處理:
npm run <script> |
解釋 |
---|---|
start |
第一次運行啓用。生成DLL文件,服務啓動在1000端口,代碼熱替換開啓。 |
deploy |
刪除舊文件,生成新DLL,進行代碼測試,打包相關文件(默認目錄~/build)。 |
dev |
與npm start 相似相同,只有當DLL文件存在時可用。加快開發速度。 |
test |
開啓Karma測試並生成覆蓋率報告。 |
visualizer |
打包資源分析 |
build |
同dev 在DLL文件存在時,加快打包速度。 |
clean |
清除打包的文件 |
cnpm |
替換爲淘寶鏡像 |
dll |
適合第一次啓動時運行,生成DLL文件。 |
第一次運行,推薦使用 start
,後續調試使用dev
打包推薦使用deploy
目前全部相關開發打包都需依賴dll
,當不清楚或運行出錯時,嘗試運行一下npm run dll
,再完成接下來的操做。
. ├── build # 全部打包配置項 ├── config # 項目配置文件 ├── server # Express 程序 (使用 webpack 中間件) │ └── main.js # 服務端程序入口文件 ├── app # 程序源文件 │ ├── html # 多頁或單頁應用的入口HTML │ ├── source # 公共的資源文件 │ ├── css │ ├── font │ ├── img | └── js │ ├── static # 公共的靜態資源文件(全部內部文件經過index.js引入,可配置全局變量。) │ └── view # 主路由和異步分割點 │ └── index # 匹配html文件夾中的index.html。(css,js文件名對應文件夾名,可直接打包無需單獨引入) │ ├── index.js # 直接與index.html匹配的入口文件,能夠做爲單頁應用的入口,在內部定義本身的項目目錄 │ ├── index.css # 如是多頁應用,可設置對應的CSS文件,直接匹配。 │ └── other ** # 頁面的其餘資源文件,經過index.js引入 └── test # 單元測試(往後調整,待開發ing)
基本
主動引入DLL的JS,默認地址爲<script src="/dll/vendor.js"></script>
位於app/view
配置html相關的JS和CSS文件。(JS和CSS需與HTML保持一致,可參考現有模版)【更多說明】
高級
引用字體圖標Icon【更多說明】
使用框架(avalon)或庫(jquery)【更多說明】
設置全局變量。雖引入公共庫,但每次調用都需從新聲明。因此就有了公共文件來提早聲明。【更多說明】
使用Css預處理器(更多說明)
使用CDN(更多說明)
修改目錄結構(更多說明)
最後
打包文件爲build
文件夾,請以此爲根目錄。
項目地址: https://github.com/sayll/avalon-webpack-start
親不要吝嗇本身的Star,到Github右上角Star一下唄。