Webpack 引入bootstrap


Bootstrap中是一種事實上的界面標准,標准到現在的網站大量的使用它。如果可以使用webpack引入的bootstrap.css,就可以一個npm install完成項目的依賴,而不必手工的添加到html內。
本來以為在入口文件內加一行就行:

  1. import 'bootstrap/dist/css/bootstrap.css'
復制代碼

然后安裝依賴:

  1. npm i bootstrap url url-loader style-loader css-loader --save
復制代碼

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

  1. //webpack.config.js:
  2. module.exports = {
  3. entry: {
  4. '1.js'
  5. },
  6. output: {
  7. filename: 'bundle.js'
  8. },
  9. module: {
  10. loaders: [
  11. { test: /\.css$/, loader: 'style-loader!css-loader' },
  12. { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" },
  13. { test: /\.(woff|woff2)$/, loader:"url?prefix=font/&limit=5000" },
  14. { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/octet-stream" },
  15. { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=image/svg+xml" }
  16. ]
  17. }
  18. };
復制代碼

我們在html文件內使用那么一點點的bootstrap:

  1. // c.html
  2. <html>
  3. <body>
  4. <ul class="nav nav-pills">
  5. <li role="presentation" class="active"><a href="#">Home</a></li>
  6. <li role="presentation"><a href="#">Profile</a></li>
  7. <li role="presentation"><a href="#">Messages</a></li>
  8. </ul>
  9. <script type="text/javascript" src="bundle.js"></script>
  10. </body>
  11. </html>
復制代碼

再次執行轉譯:

  1. webpack
復制代碼

打開瀏覽器:

  1. open c.html
復制代碼

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

引入jquery

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

首先安裝jquery:

  1. npm i jquery
復制代碼

其次使用插件裝入jquery,方法是修改webpack的配置文件,加入:

  1. plugins: [
  2. new webpack.ProvidePlugin({
  3. $: "jquery",
  4. jQuery: "jquery"
  5. })
  6. ]
復制代碼

在入口文件內加入代碼來做驗證:

  1. $("body").append("<div>hello world</div>")
復制代碼

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

  1. import 'bootstrap/dist/js/bootstrap.js'
復制代碼
排除錯誤

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

  1. {
  2. test: /\.css$/,
  3. include: [
  4. path.resolve(__dirname, "not_exist_path")
  5. ],
  6. loader: "style!css"
  7. }
復制代碼

原始的issue在此:https://github.com/webpack/cs... 。我看看看到此答案時以為是個玩笑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM