web-dev-qa-db-ja.com

Webpack import bootstrap .jsおよび.css

私は、react、bootstrap、およびbabelでes6を使用するwebpackを使用してアプリを構築しています。

ただし、boostrap.jsとbootstrap.cssをアプリにインポートすることはできません。

私のwebpack.config.js

    var webpack = require('webpack'),
  HtmlWebpackPlugin = require('html-webpack-plugin'),
  path = require('path'),
  srcPath = path.join(__dirname, 'src');

module.exports = {
  target: 'web',
  cache: true,
  entry: {
    module: path.join(srcPath, 'module.js'),
    common: ['react', 'react-router', 'alt']
  },
  resolve: {
    root: srcPath,
    extensions: ['', '.js'],
    modulesDirectories: ['node_modules', 'src']
  },
  output: {
    path: path.join(__dirname, 'tmp'),
    publicPath: '',
    filename: '[name].js',
    library: ['Example', '[name]'],
    pathInfo: true
  },

  module: {
    loaders: [
      {test: /\.js?$/, exclude: /node_modules/, loader: 'babel?cacheDirectory'}
    ]
  },
  plugins: [
    new webpack.optimize.CommonsChunkPlugin('common', 'common.js'),
    new HtmlWebpackPlugin({
      inject: true,
      template: 'src/index.html'
    }),
    new webpack.ProvidePlugin({
           $: "jquery",
           jQuery: "jquery"
    }),
    new webpack.ProvidePlugin({
           bootstrap: "bootstrap.css",
    }),
    new webpack.NoErrorsPlugin()
  ],

  debug: true,
  devtool: 'eval-cheap-module-source-map',
  devServer: {
    contentBase: './tmp',
    historyApiFallback: true
  }
};

だから私の.jsファイル(reactコンポーネント)で私がやろうとしていること:import 'bootstrap'。ただし、CSSは実装されていません。 .jsインポートはうまく機能します。

では、どうすればboostrapをインポートしたり、webpackを構成できますか?

21
Fabho

動作させるには、次のことを行う必要があります。

  1. Webpack設定ファイルのresolveセクションで、bootstrap cssファイルパスが含まれていることを確認してください。

例として:

_var bootstrapPath = path.join(
    __dirname,
    'development/bower_components/bootstrap/dist/css'
);
_

次に、webpack configオブジェクトで:

_resolve: {
    alias: {
        jquery: path.join(__dirname, 'development/bower_components/jquery/jquery')
    },
    root: srcPath,
    extensions: ['', '.js', '.css'],
    modulesDirectories: ['node_modules', srcPath, commonStylePath, bootstrapPath]
}
_
  1. スタイルローダーとCSSローダーがあることを確認してください。例えば。 _loaders:[{ test: /\.css$/, loader: "style-loader!css-loader" }]_
  2. Jsファイルで使用しますrequire('bootstrap.min.css');
8
Yunzhou

Lessプラグインを使用して、適切に宣言するだけです...

// Webpack file
{
  test: /\.less$/,
  loader: "style-loader!css-loader!less-loader"
},
// I have to add the regex .*? because some of the files are named like... fontello.woff2?952370
{
  test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)(\?.*)?$/,
  loader: 'url?limit=50000'
}

// Less file
@import '~bootstrap/less/bootstrap';

私はまだJSに取り組んでいますが、すぐにお知らせします:-)

0
Jackie