プロジェクトにおけるwebpackコードの詳細
4007 ワード
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var webpack = require("webpack");
module.exports = {
entry: {
vendor: ["react", "react-dom", "./node_modules/bootstrap/dist/css/bootstrap.css"],
index: ["./public/js/main.js", "./public/style/index.css"]
},
output: {
path: require('path').resolve("./public/dist"),
filename: "[name].js"
},
resolve: {
extensions: ['', '.js', '.jsx']
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/,
query: {
presets: ['es2015', 'react']
}
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader")
},
{test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff'},
{test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream'},
{test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file'},
{test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml'},
//
{test:/\.(png|jpg)$/,
loader:'url-loader?limit=8192&name=images/[hash:8].[name].[ext]'
},
]
},
devtool: "#cheap-source-map",
plugins: [
new ExtractTextPlugin("[name].css"),
new webpack.optimize.CommonsChunkPlugin("vendor", "vendor.bundle.js")
]
};
上はsecond-saleプロジェクトのwebpackです.config.jsのコードは、以下に支店で説明します.
var ExtractTextPlugin = require("extract-text-webpack-plugin");
ExtractTextPluginのインポートは32行で使用されます.
var webpack = require("webpack");
Webpackをインポートし、
module.exports = {
moduleの役割はloadersを追加することです.
entry: {
vendor: ["react", "react-dom", "./node_modules/bootstrap/dist/css/bootstrap.css"],
index: ["./public/js/main.js", "./public/style/index.css"]
},
entryページエントリファイル構成では、各ページに1つのエントリファイルがあり、ファイルにはrequireを介して他のモジュールを導入することができますが、これらのモジュールwebpackは自動的にエントリファイルと1つのファイルにマージされます.getEntryでエントリファイルを取得します.
output: {
path: require('path').resolve("./public/dist"),
filename: "[name].js"
},
outputは、エントリファイルが最終的にどの名前のファイルを生成し、どこに格納するかに対応する出力項目構成です.
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/,
query: {
presets: ['es2015', 'react']
}
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader")
},
{test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff'},
{test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream'},
{test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file'},
{test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml'},
//
{test:/\.(png|jpg)$/,
loader:'url-loader?limit=8192&name=images/[hash:8].[name].[ext]'
},
]
loadersローダは、webpackの各ファイルにどのローダを使用して処理する必要があるかを通知します.
devtool: "#cheap-source-map",
sourcemapを生成し、デバッグを容易にし、圧縮されていないソースコードに迅速にナビゲートできます.
plugins: [
new ExtractTextPlugin("[name].css"),
new webpack.optimize.CommonsChunkPlugin("vendor", "vendor.bundle.js")
]
pluginsはプラグインアイテムです.ここでは、複数のエントリファイルの共通スクリプト部分を抽出し、複数のページ間で多重化を容易にするファイルを生成するためのCommonsChunkPluginのプラグインを使用します.