To przejdzie w trzech etapach;
Najpierw będziesz potrzebować dwóch ładowarek i wtyczki; nazwane odpowiednio css-loader
i style-loader
i i extract-text-webpack-plugin
.
Wtedy twój config może wyglądać jak następuje:
const webpack = require('webpack');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const path = require('path');
module.exports = {
entry: {
app: './src/index.js'
},
output: {
path: 'dist',
filename: 'js/[name]-bundle.js'
},
devtool: "cheap-source-map",
resolveLoader: {
modules: [
'node_modules',
path.join(__dirname, '../node_modules'),
]
},
module: {
loaders: [
{
test: /.css?$/,
loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }),
exclude: /node_modules/
}
]
},
plugins: [
new ExtractTextPlugin("css/[name].css"),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
screw_ie8: true,
conditionals: true,
unused: true,
comparisons: true,
sequences: true,
dead_code: true,
evaluate: true,
join_vars: true,
if_return: true
},
output: {
comments: false
}
}),
]
}
a następnie w pliku wejściowego, wymaga od nich jak require('./style.css');
Pamiętaj, będzie śledzić ścieżki jako źródła.
Jeśli ładujesz pliki czcionek i obrazy w Tobie, możesz potrzebować również wtyczki file-loader
, która skopiuje wszystkie zasoby w katalogu.
Plik config-ładowarka będzie wyglądać następująco:
{
test: /.png?$/,
loader: 'file-loader?name=img/[name].[ext]',
exclude: /node_modules/
}
UgligyJsPlugin
również minify CSS.
Czy konieczne jest określenie wszystkich plików css we wpisie? – Bonomi
Tak, ponieważ jeden plik css nie będzie zawierał innego. Tak więc trzeba napisać to ręcznie. W przypadku plików JS wymagany jest jeden punkt wejścia, a wszystkie inne zaimportowane pliki js są automatycznie pakowane. Wizualizuj wykres zaimportowanych wyciągów, a zrozumiesz. – softvar