如何在与Webpack捆绑的Angular 1应用程序中使用Bootstrap

时间:2017-03-10 15:30:03

标签: javascript angularjs twitter-bootstrap webpack

我正在尝试在Angular 1应用程序中使用Bootstrap,该应用程序依赖于捆绑的JS和CSS。 这是我当前的webpack.config.js:

var webpack = require('webpack');

module.exports = {
  context: __dirname + '/src/assets/app',
  entry: {
    app: './app.module.js',
    vendor: [
      'angular',
      'jquery',
      'bootstrap/dist/css/bootstrap.css',
      'bootstrap'
    ]
  },
  output: {
    path: __dirname + '/src/assets/jsBundles',
    filename: 'app.bundle.js'
  },
  target: 'web',
  node: {
    fs: 'empty'
  },
  devtool: 'eval',
  plugins: [
    new webpack.optimize.CommonsChunkPlugin({
      name: 'vendor',
      filename: 'vendor.bundle.js'
    }),
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery'
    })
  ],
  module: {
    rules: [
      {
        test: /\.html$/,
        use: ['html-loader']
      }, {
        test: /\.css$/,
        use: ['css-loader']
      }, {
        test: /\.woff($|\?)|\.woff2($|\?)|\.ttf($|\?)|\.eot($|\?)|\.svg($|\?)/,
        use: ['url-loader']
      }
    ]
  }
};

我的Angular应用程序成功加载,但是当我尝试使用任何Bootstrap组件或CSS时,它们无法正常工作。没有出现错误,但是没有应用Bootstrap样式,也没有类似dropwdown或模态功能的Bootstrap JS。当我查看vendor.bundle.js时,我看到了所有Bootstrap JS,CSS和字体。 我是否需要在客户端做一些事情来加载"引导?

2 个答案:

答案 0 :(得分:1)

"window.jQuery": "jquery"中尝试定义ProvidePlugin

作为参考,您可以参考webpack.config.js&链接中的webpack.common.config.js或可以参考Angular 1.x and Webpack

的入门套件

答案 1 :(得分:0)

因为您正在使用html-loader和css-loader。您可以在js文件中包含css,只需在使用样式的javascript文件中插入require('bootstrap/dist/css/bootstrap')import(if es6) css文件。无需为web包提供css的入口点

上面有很多方法可以做一个简单的方法,你可以按照详细的webpack样式插入here