使用webpack和CSS模块在CSS中编译JS值?

时间:2016-09-15 03:59:39

标签: webpack

我正在使用CSS模块,并且有一个JS文件,可以保存我的页面颜色,如下所示:

module.exports = {
  colors: {
    black: '#000000',
    white: '#ffffff',
    mint: '#b3e4e9',
    red: '#ed2e56'
  },
};

我能够提取CSS并将其构建到自己的.css文件中并对捆绑我的.js文件执行相同的操作。但是,颜色值不会被编译成十六进制值,而是保留它们在导出的JS对象中使用的名称(例如,我得到'background-color:~colors.white',而不是'background- color:#ffffff;'在我构建的.css文件中)。因此,风格没有贯彻。

我的webpack.prodution.config.js设置如下:

const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const postCSS = require('./build/postcss');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.join(__dirname, './public/build'),
    publicPath: '/build/',
    filename: 'bundle.js',
  },
  module: {
    loaders: [{
      test: /\.js$/,
      exclude: /node_modules/,
      loader: 'babel',
    }, {
      test: /\.css$/,
      loader: ExtractTextPlugin.extract('style', 'css', 'postcss'),
    }, {
      test: /\.jpeg|jpg|gif|svg|png$/,
      loader: 'file?name=assets/images/[name].[ext]',
    }, {
      test: /\.ttf|woff|woff2|eot$/,
      loader: 'file?name=assets/fonts/[name].[ext]',
    }],
  },
  plugins: [
    new ExtractTextPlugin('styles.css'),
    new webpack.optimize.UglifyJsPlugin({
      compressor: { warnings: false },
    }),
    new webpack.optimize.OccurrenceOrderPlugin(),
    new webpack.optimize.DedupePlugin(),
    new webpack.DefinePlugin({
      'process.env': JSON.stringify({
        NODE_ENV: 'development',
      }),
      __DEV__: true,
      __PROD__: false,
    }),
  ],
  postcss: function processPostCSS(bundler) {
    return postCSS(bundler);
  },
};

如何将js和css分成不同的页面,同时仍然将JS颜色编译为css中的十六进制值?谢谢。

0 个答案:

没有答案