Webpack 引入bootstrap

Bootstrap中是一种事实上的界面标准,标准到如今的网站大量的使用它。若是能够使用webpack引入的bootstrap.css,就能够一个npm install完成项目的依赖,而没必要手工的添加到html内。
原本觉得在入口文件内加一行就行:javascript

  1. import 'bootstrap/dist/css/bootstrap.css'
复制代码

而后安装依赖:css

  1. npm i bootstrap url url-loader style-loader css-loader --save
复制代码

实际上却不是想象的那么简单。由于css文件内还引用了不少类型的字体文件和矢量图文件。要引入它,必须同时提供css以外的类型的对应的loader:html

  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:java

  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>
复制代码

再次执行转译:jquery

  1. webpack
复制代码

打开浏览器:webpack

  1. open c.html
复制代码

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

引入jquery

若是须要使用bootstrap的js插件的话,就必须首先引入jquery。引用jquery的一个方法是使用webpack插件。github

首先安装jquery:web

  1. npm i jquery
复制代码

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

  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... 。我看看看到此答案时觉得是个玩笑。

相关文章
相关标签/搜索