Ich bin ziemlich neu in WebPack, und ich möchte in der Lage sein, ein Verzeichnis von CSS-Dateien (.app/styles/[CSS-Dateien ...]) und ausgegeben werden sie in eine CSS-Datei (dist/styles.css).WebPack wie alle CSS-Dateien in eine CSS-Datei
Derzeit sind alle JavaScript-Dateien in einer einzigen "index_bundle.js" -Datei kompiliert, was perfekt ist, aber ich möchte das gleiche für meine CSS-Dateien erreichen.
Nach viel "Googeln" habe ich festgestellt, dass das ExtractTextPlugin für WebPack dabei helfen kann, aber das funktioniert nur für eine CSS-Datei, die der Eigenschaft "entry" hinzugefügt wird (zB: entry: { style: "./app/styles/style.css"}), die dann als Link-Tag zum HTML-Kopf hinzugefügt wird, was gut ist, aber ich möchte, dass alle meine CSS-Dateien in eine styles.css-Datei gehen und sie dann verwenden das im HTML-Kopf als Link.
Mein aktueller WebPack Config wie folgt aussieht:
var HtmlWebpackPlugin = require('html-webpack-plugin');
var HtmlWebpackPluginConfig = new HtmlWebpackPlugin({
template: __dirname + '/app/index.html',
filename: 'index.html',
inject: 'body'
});
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var ExtractTextPluginConfig = new ExtractTextPlugin(
"styles.css",
{
allChunks: false
}
);
module.exports = {
entry: {
index: "./app/index.js"//,
//styles: "./app/styles/style1.css" // I don't want one file, I want to use a directory eg: "./app/styles/"
},
output: {
path: __dirname + '/dist',
filename: 'index_bundle.js'
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader")
}
]
},
plugins: [
HtmlWebpackPluginConfig,
ExtractTextPluginConfig
]
}
Kann mir bitte jemand in die richtige Richtung? Auch wenn es sich um ein anderes Plugin oder einen anderen Ansatz handelt. Jede Hilfe wird sehr geschätzt!
EDIT: Meine neue WebPack Config wie folgt aussehen:
var HtmlWebpackPlugin = require('html-webpack-plugin');
var HtmlWebpackPluginConfig = new HtmlWebpackPlugin({
template: __dirname + '/app/index.html',
filename: 'index.html',
inject: 'body'
});
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var ExtractTextPluginConfig = new ExtractTextPlugin(
"index_bundle.css"
);
module.exports = {
entry: [
'./app/index.js',
'./app/index.css'
],
output: {
path: __dirname + '/dist',
filename: 'index_bundle.js'
},
module: {
preloaders: [
{
test: /\.css/,
exclude: /styles/,
loader: 'import-glob-loader'
}
],
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
{
test: /styles\.css$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader")
},
{
test: /\.json$/,
loader: 'json'
}
]
},
devServer: {
historyApiFallback: true
},
plugins: [
HtmlWebpackPluginConfig,
ExtractTextPluginConfig
]
}
Die Art und Weise webpack funktioniert, ist die Abhängigkeitsbaum (Importe) eines Haupteingang zu gehen Datei. Um also alle css in einem Verzeichnis zu bündeln, würden Sie einen Index 'styles.css' und' @ import 'für alle anderen css-Dateien erstellen (in der Reihenfolge, in der sie im Paket erscheinen sollen.) –
das bedeutet, dass ich mich daran erinnern muss, alle @imports jedes Mal, wenn ich neue CSS-Dateien hinzufügen? –
Nein, Sie brauchen einen Glob-Import: @import './mydir/**/*.css' –