什麼是webpack?css
webpack 是一個現代 JavaScript 應用程序的靜態模塊打包工具。當 webpack 處理應用程序時,它會在內部構建一個 依賴圖(dependency graph),此依賴圖會映射項目所需的每一個模塊,並生成一個或多個 _bundle_。(官網解釋)react
webpack能作什麼?webpack
module.exports = { // 入口文件,是模塊構建的起點,同時每個入口文件對應最後生成的一個 chunk。 entry: { bundle: [ 'webpack/hot/dev-server', 'webpack-dev-server/client?http://localhost:8080', path.resolve(__dirname, 'app/app.js') ] }, // 文件路徑指向(可加快打包過程)。 resolve: { alias: { 'react': pathToReact } }, // 生成文件,是模塊構建的終點,包括輸出文件與輸出路徑。 output: { path: path.resolve(__dirname, 'build'), filename: '[name].js' }, // 這裏配置了處理各模塊的 loader ,包括 css 預處理 loader ,es6 編譯 loader,圖片處理 loader。 module: { loaders: [ { test: /\.js$/, loader: 'babel', query: { presets: ['es2015', 'react'] } } ], noParse: [pathToReact] }, // webpack 各插件對象,在 webpack 的事件流中執行對應的方法。 plugins: [ new webpack.HotModuleReplacementPlugin() ] };
實用的插件程序員
const SpeedMeasurePlugin = require("speed-measure-webpack-plugin"); const smp = new SpeedMeasurePlugin(); const webpackConfig = smp.wrap({ entry: { app: ["./app.js"] }, output: "./public", module: { rules: [ { test: /\.js$/, use: [{ loader: "babel-loader" }] } ] }, plugins: [ new MyPlugin(), new MyOtherPlugin() ] });
webpack的做者是誰?es6
webpack的做者是德國紐倫堡Tobias Koppers,一位自由軟件開發者web
webpack最初出現想解決的是什麼問題?瀏覽器
谷歌曾經推出過一個工具,叫GWT(Google Web Toolkit),讓Java程序員能用Java編寫客戶端應用。GWT實際上是一個Java應用到JavaScript SPA的編譯器,也使用了谷歌的一些應用。GWT有一個功能做者研究了很長時間,就是代碼拆分(code splitting)。這個功能能夠延遲加載不經常使用的代碼。對於要保持初始加載速度的大型應用,這個功能很是重要。但做者沒發現JavaScript的開源工具(2012年)中哪一個具有這個功能,因而就想寫一個這樣的工具,也就是webpack。babel
總結就說,webpack誕生之初主要想解決代碼拆分的問題app