1. 程式人生 > >簡單的webpack- 引入bootstrap

簡單的webpack- 引入bootstrap

Bootstrap中是一種事實上的介面標準,標準到現在的網站大量的使用它。如果可以使用webpack引入的bootstrap.css,就可以一個npm install完成專案的依賴,而不必手工的新增到html內。
本來以為在入口檔案內加一行就行:

import 'bootstrap/dist/css/bootstrap.css'

然後安裝依賴:

npm i bootstrap url url-loader style-loader css-loader --save
    

實際上卻不是想象的那麼簡單。因為css檔案內還引用了很多型別的字型檔案和向量圖檔案。要引入它,必須同時提供css之外的型別的對應的loader:


//webpack.config.js: 
module.exports = {
    entry: {
       '1.js'
    },
    output: {    
        filename: 'bundle.js'
    },
    module: {
      loaders: [
          
            { test: /\.css$/, loader: 'style-loader!css-loader' },
            { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" },
            { test:
/\.(woff|woff2)$/, loader:"url?prefix=font/&limit=5000" }, { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/octet-stream" }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=image/svg+xml" } ] } };

我們在html檔案內使用那麼一點點的bootstrap:

// c.html
<html>
  <body>
    <ul class="nav nav-pills">
      <li role="presentation" class="active"><a href="#">Home</a></li>
      <li role="presentation"><a href="#">Profile</a></li>
      <li role="presentation"><a href="#">Messages</a></li>
    </ul>
    <script type="text/javascript" src="bundle.js"></script>
  </body>
</html>

再次執行轉譯:

webpack

開啟瀏覽器:

open c.html

看到bootstrap那熟悉而太熟悉的介面。

引入jquery

如果需要使用bootstrap的js外掛的話,就必須首先引入jquery。引用jquery的一個方法是使用webpack外掛。

首先安裝jquery:

npm i jquery

其次使用外掛裝入jquery,方法是修改webpack的配置檔案,加入:

    plugins: [
        new webpack.ProvidePlugin({
            $: "jquery",
            jQuery: "jquery"
        })
    ]

在入口檔案內加入程式碼來做驗證:

$("body").append("<div>hello world</div>")

如果成功,說明jquery載入成功。這樣你就可以在入口js檔案內載入bootstrap.js了:

import 'bootstrap/dist/js/bootstrap.js'

排除錯誤

我確實在引入bootstrap的時候,遇到一個神奇的錯誤。在webpack轉譯時報錯,css-loader,unknown word樣子的錯誤。對webpack.config.js檔案加入一個include屬性並指向到不存在的目錄即可。

{
    test: /\.css$/,
    include: [
        path.resolve(__dirname, "not_exist_path")
    ],
    loader: "style!css"
}

其他3篇相關文章也記錄一下:

https://segmentfault.com/a/1190000006630500

https://segmentfault.com/a/1190000006633746

https://segmentfault.com/a/1190000006634136