----------webpack的用法全在配置中!!
webpack是在node環境下運行的,學習webpack以前,請先自行安裝node環境(含npm);css
第一步: npm install -g webpack //全局安裝 第二步: 創建項目文件夾,如「demo」 cd demo npm init //一直回車下去 npm install webpack --save-dev //項目目錄本地安裝
在項目根目錄「demo」下的簡單目錄結構以下: --app --index.js //入口文件 --node_modules //安裝modules時,自動創建 --tem //HTML模板文件夾 --index.html --webpack.config.js //自建,不會自動生成;通常會有開發和發佈兩種配置文件 --package.json //由npm init時自動創建
webpack的用法所有都在webpack.config.js中;其餘地方不要夾雜webpack配置的內容;html
//webpack.config.js寫入如下內容 //引入內置功能模塊(不須要另行安裝); var path = require('path'); var webpack = require('webpack'); //引入第三方功能模塊(須要另行安裝);
//關於第三方模塊的用法,強烈建議直接看文檔;node
var HtmlWebpackPlugin = require('html-webpack-plugin'); //定義經常使用路徑變量; //返回當前文件(webpack.config.js)所在位置 var ROOT_PATH = path.resolve(__dirname); var APP_PATH = path.resolve(ROOT_PATH,'app'); //拼接路徑; var TEM_PATH = path.resolve(ROOT_PATH,'tem'); var BUILD_PATH = path.resolve(ROOT_PATH,'build'); module.exports = { entry : { //入口文件 app : APP_PATH, vendors : ['react','react-dom'] }, output : { //產出路徑; path : BUILD_PATH, filename : '[name].js' }, module : { //一切資源(images/css/js...)皆模塊,一切須要loader解析; loaders : [ {test:/\.js?$/, loader:'jsx', exclude:/node_modules/} ] }, plugins : [ //生成HTML文件; new HtmlWebpackPlugin({ title : 'Hello world app!', template : path.resolve(TEM_PATH,'index.html'), filename : 'index.html', chunks : ['vendors','app'], inject : 'body', // chunksSortMode : "none" }), new webpack.HotModuleReplacementPlugin() //保證明時刷新; ], devServer:{ //實時刷新,須要inline model和hot:true histroyApiFallback : true, hot : true, inline : true, progress : true } }
注意:webpack分析webpack.config.js中的entry file到其餘文件中查找依賴,全部文件被包含在bundle.js中;react
webpack給每一個module(注意:全部文件都是module,包括經過loaders進來的圖片、css等)一個獨立id;並使全部module在bundle.js中能夠經過id訪問; 啓動時,只有entry chunk被執行;
webpack支持CMD和AMD規範,但不要在入口文件中使用AMD規範,會報錯;webpack
//Webpack搭建本地服務器,監聽文件改變,整個頁面實時更新;可是不會輸出結果文件到磁盤,適於生產環境下調試;git
//webpack-dev-server調用的腳本文件不是output的文件,而是保存在內存中的文件……目前引用的方法只知道用Html-webpack-plugin自動生成html頁面來引用;github
經常使用配置: plugins : [ //保證明時更新,須要啓用內置的HotModuleReplacementPlugin插件; new webpack.HotModuleReplacementPlugin() ], devServer:{ //server切換到inline model histroyApiFallback : true, hot : true, inline : true, progress : true }
注意:webpack-dev-server容許內網訪問------設置host 0.0.0.0
//webpack-dev-server是實現頁面總體刷新;web
//在package.json文件中配置"script"腳本設置快捷命令方式 //如下命令行參數不要和上邊webpack.config.js中的配置有交集,好像會報錯; "scripts": { "start":"webpack-dev-server --colors --host 0.0.0.0 --port 8080" } 使用命令行模式npm run start運行webpack-dev-server;
//根據需求綁定不一樣的配置文件並設置scripts腳本運行方式; "scripts": { "start": "webpack-dev-server --hot --inline", "build": "webpack --progress --colors --config webpack.production.config.js" }
本人是初學者,有問題但願你們一塊兒探討,共同進步,謝謝;npm
實踐是檢驗真理的惟一標準;能夠看着入口文件和webpack.config.js,猜想應該出現的結果,而後再執行一下,檢驗一下;
推薦一篇文章:json