2017-04-11 38 views
0

我想让webpack将我的CSS文件(使用PostCSS)编译为一个单独的文件。从文档看来,这看起来正是ExtractTextPlugin应该做的。但是,我无法让webpack根据我的CSS文件做任何事情。为什么Webpack会忽略我的CSS文件?

相关的项目结构:

dist 
⎣js 
    ⎣bundle.js 
public 
⎣css 
    ⎣style.css* 
src 
⎣css 
    ⎣index.css 

* file doesn’t exist (hasn’t been created) 

webpack.config.babel.js

import webpack from 'webpack'; 
import path from 'path'; 

import ExtractTextPlugin from 'extract-text-webpack-plugin'; 

import { WDS_PORT } from './src/shared/config'; 
import { isProd } from './src/shared/util'; 

export default { 
    entry: [ 
    'react-hot-loader/patch', 
    './src/client', 
    ], 
    output: { 
    filename: 'js/bundle.js', 
    path: path.resolve(__dirname, 'dist'), 
    publicPath: isProd ? '/static/' : `http://localhost:${ WDS_PORT }/dist/`, 
    }, 
    module: { 
    rules: [ 
     { test: /\.(js|jsx)$/, use: 'babel-loader', exclude: /node_modules/ }, 
     { 
     test: /\.css$/, 
     use: ExtractTextPlugin.extract({ 
      fallback: 'style-loader', 
      use: [ 
      { 
       loader: 'style-loader', 
      }, 
      { 
       loader: 'css-loader', 
       options: { 
       sourceMap: true, 
       importLoaders: 1, 
       }, 
      }, 
      { 
       loader: 'postcss-loader', 
       options: { 
       sourceMap: 'inline', 
       }, 
      }, 
      ], 
     }), 
     }, 
    ], 
    }, 
    devtool: isProd ? false : 'source-map', 
    resolve: { 
    extensions: ['.js', '.jsx', '.css'], 
    }, 
    devServer: { 
    port: WDS_PORT, 
    hot: true, 
    }, 
    plugins: [ 
    new webpack.optimize.OccurrenceOrderPlugin(), 
    new webpack.HotModuleReplacementPlugin(), 
    new webpack.NamedModulesPlugin(), 
    new webpack.NoEmitOnErrorsPlugin(), 
    new ExtractTextPlugin('./public/css/style.css'), 
    ], 
}; 

这会很乐意正确编译我的javascript,但它什么都没有我的CSS。怎么回事,我该如何解决?

+0

另外值得注意的是:如果我将postCSS从等式中删除,并且只有'use:'css-loader'',它仍然不会执行任何操作。 – futuraprime

+0

您是否在从shell运行webpack时检查输出? – Sebastianb

回答

1

Webpack仅处理某些时刻正在导入的文件。这或者被指定为入口点或者被导入从入口点引用的任何文件中。这些规则不会导入任何文件,只要导入通过测试(与您的案例中的正则表达式匹配)就可以应用它们。

你需要导入你的CSS就像任何其他模块。

import './css/index.css'; 

另请参阅Code Splitting - CSS

相关问题