webpack -> vue Component 從入門到放棄(二)

Forewordcss

上一篇簡單介紹了webpack的打包功能,應該說是比較無心義的打包,對於開發人員來講,這種效率是很是低的。因此咱們來點昇華。html

First Stepvue

咱們給第一篇例子中加個樣式文件咱們 style.cssnode

body { background: yellow; }

而後修改 entry.jswebpack

require("!style-loader!css-loader!./style.css") // 載入 style.css
document.getElementById('app').innerHTML="it works";
require("./content.js");

ps: 這裏就體現loader的用處了,咱們先回顧一下index.html的代碼git

<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <div id="app"></div>
         <script src="bundle.js"></script>
    </body>
</html>

在這裏咱們只引入webpack打包生成後的bundle.js,全部的js css 等都是經過這個文件被引入頁面的,而不像日常咱們引入 js 用 <script>標籤 引入 css 用 link/<style>便籤引入.github

原理就是 首頁 將 style.css 也當作是一個模塊,而後用 css-loader 來讀取它,再用 style-loader 把它插入到頁面中。web

因此咱們還要再package.json安裝 css-loader style-loader 依賴npm

$ cnpm install css-loader --save-dev
$ cnpm install style-loader --save-dev

安裝成功後成功自動加入依賴信息
clipboard.pngjson

讓咱們跑一下

$ webpack entry.js bundle.js

刷新index.html後就能看到body被改成 yellow 了

若是每次 require CSS 文件的時候都要寫 loader 前綴,是一件很繁瑣的事情。咱們能夠根據模塊類型(擴展名)來自動綁定須要的 loader。

將 entry.js 中的 require("!style-loader!css-loader!./style.css") 修改成 require("./style.css") ,(ps:我用的是webpack 2.2.1版本的,在這裏它已經不容許在使用loaders 時去省略 -loader 這個後綴了,因此打包時報錯,請檢查你是否寫成了require("!style!css!./style.css") ) 而後執行:

//爲了看效果,咱們能夠在style.css裏面把yellow換成其餘顏色
$ webpack entry.js bundle.js --module-bind 'css=style-loader!css-loader'

# 有些環境下可能須要使用雙引號 並且須要在感嘆好前加上斜槓進行轉譯
$ webpack entry.js bundle.js --module-bind "css=style-loader!css-loader"

顯然,這兩種使用 loader 的方式,效果是同樣的。

Second Step

要是每次都須要打一堆字符串去打包,簡直沒法忍受,因此咱們須要簡化,簡化。。。。

webpack.config

Webpack 在執行的時候,除了在命令行傳入參數,還能夠經過指定的配置文件來執行。默認狀況下,會搜索當前目錄的 webpack.config.js 文件,這個文件是一個 node.js 模塊,返回一個 json 格式的配置信息對象,或者經過 --config 選項來指定配置文件。

首先咱們仍是要先安裝webpack依賴,以前的demo都是在全局的webpack下操做的,如今咱們要在項目目錄下安裝webpack

$ cnpm install webpack --save-dev

成功在package.json加入依賴
clipboard.png

而後建立一個配置文件 webpack.config.js:

#此文件不能寫註釋,我這裏圖方便,就以註釋的方式進行註解了
var webpack = require('webpack'); // 引入webpack 模塊
module.exports = { //commonJs模塊規則寫法
  entry: './entry.js', //入口文件,這裏指的是根目錄下的entry.js做爲入口文件
  output: {//輸出接口
    path: __dirname,//項目輸出的路徑(__dirname爲絕對路徑)
    filename: 'bundle.js'//文件以bundle.js輸出
  },

//定義了對模塊的處理邏輯,這裏能夠用 loaders 定義了一系列的加載器,
以及一些正則。當須要加載的文件匹配test的正則時,
就會調用後面的 loader 對文件進行處理,這正是 webpack 強大的緣由。
  module: {
    loaders: [
      {test: /\.css$/, loader: 'style-loader!css-loader'}
    ]
  }
}

詳細的其餘配置信息能夠去官網進行查看

同時簡化 entry.js 中的 style.css 加載方式:

require('./style.css')

最後運行一下

$ webpack

能夠看到 webpack 經過配置文件執行的結果和上一章節經過命令行 webpack entry.js bundle.js --module-bind 'css=style-loader!css-loader' 執行的結果是同樣的。

這篇就這樣吧,感受進度有點慢

webpack -> vue Component 從入門到放棄(四)
webpack -> vue Component 從入門到放棄(一)
webpack -> vue Component 從入門到放棄(三)
github源代碼

相關文章
相關標籤/搜索