在使用vue-cli時咱們先了解一下什麼是webpack。javascript
Webpack 是當下最熱門的前端資源模塊化管理和打包工具。它能夠將許多鬆散的模塊按照依賴和規則打包成符合生產環境部署的前端資源。還能夠將按需加載的模塊進行代碼分隔,等到實際須要的時候再異步加載。經過 loader
的轉換,任何形式的資源均可以視做模塊,好比 CommonJs 模塊、 AMD 模塊、 ES6 模塊、CSS、圖片、 JSON、Coffeescript、 LESS 等。css
我使用的是webpack2.x版本,官網連接:https://webpack.js.org/html
什麼是webpack前端
webpack是現代JavaScript應用程序的模塊捆綁器。它將根據模塊的依賴關係進行靜態分析,而後將這些模塊按照指定的規則生成對應的靜態資源。vue
知道了webpack這個打包工具,那麼不得不提webpack的loader。java
什麼是loader?node
webpack 的目標是,讓 webpack 聚焦於項目中的全部資源(asset),而瀏覽器不須要關注考慮這些。webpack 把每一個文件(.css, .html, .scss, .jpg, etc.) 都做爲模塊處理。然而 webpack 只理解 JavaScript。可是 loader 轉換器能夠將各類類型的資源轉換成 JavaScript 模塊。這樣,任何資源均可以成爲 Webpack 能夠處理的模塊。webpack
Loader 能夠理解爲是模塊和資源的轉換器,它自己是一個函數,接受源文件做爲參數,返回轉換的結果。這樣,咱們就能夠經過 require
來加載任何類型的模塊或文件,好比 CoffeeScript、 JSX、 LESS 或圖片。web
先來看看 loader 有哪些特性?正則表達式
npm
發佈和安裝。package.json
的 main
指定,一般的模塊也能夠導出一個 loader 來使用。配置(Configuration)
由於 webpack 配置是標準的 Node.js CommonJS 模塊,你能夠以下:
require(...)
導入其餘文件require(...)
使用 npm 的工具函數?:
操做符最簡單的配置
在webpack.config.js頁面配置以下代碼:
var path = require('path'); module.exports = { entry: './foo.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'foo.bundle.js' } };
多個target配置
var path = require('path'); var webpack = require('webpack'); var webpackMerge = require('webpack-merge'); var baseConfig = { target: 'async-node', entry: { entry: './entry.js' }, output: { path: path.resolve(__dirname, 'dist'), filename: '[name].js' }, plugins: [ new webpack.optimize.CommonsChunkPlugin({ name: 'inline', filename: 'inline.js', minChunks: Infinity }), new webpack.optimize.AggressiveSplittingPlugin({ minSize: 5000, maxSize: 10000 }), ] }; let targets = ['web', 'webworker', 'node', 'async-node', 'node-webkit', 'electron-main'].map((target) => { let base = webpackMerge(baseConfig, { target: target, output: { path: path.resolve(__dirname, 'dist/' + target), filename: '[name].' + target + '.js' } }); return base; }); module.exports = targets;
具體用法和配置,你們能夠參考webpack的官網:https://webpack.js.org/concepts/configuration/