rsuite / webpack-multiple-themes-compile

Overwrite webpack config to output multiple themes css.
https://github.com/rsuite/rsuite/tree/master/examples/custom-multiple-themes
MIT License
16 stars 4 forks source link

themes css content is null #1

Closed zhangy0510 closed 5 years ago

zhangy0510 commented 5 years ago

created themes css content is null. Why. How to resolve it. Please tell me, thank you.

multipleThemesCompile({ themesConfig: { green: { color: '#008000' }, yellow: { color: '#ffff00' } }, styleLoaders: [ { loader: 'css-loader' }, { loader: 'less-loader' } ], lessContent: 'body{color:@color}', cwd: path.resolve('./'), cacheDir: './src/less/themes', outputName:themeName => ${themeName}.css })

hiyangguo commented 5 years ago

Can you probvide your webpack config for me? @zhangy0510

zhangy0510 commented 5 years ago

参照【webpack-mutiple-theme-bundle-css-demo】改成下面这样,生成的css文件还是空的,麻烦看下,非常感谢~

const path = require("path"); const fs = require('fs'); const helpers = require('./helpers'); const AOT = helpers.hasNpmFlag('aot'); const webpack = require("webpack"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin"); const FastUglifyJsPlugin = require('fast-uglifyjs-plugin'); const CleanWebpackPlugin = require('clean-webpack-plugin') const DefinePlugin = require('webpack/lib/DefinePlugin'); const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin'); const ngcWebpack = require('ngc-webpack'); const ContextReplacementPlugin = require('webpack/lib/ContextReplacementPlugin'); const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin; const HtmlWebpackIncludeAssetsPlugin = require('html-webpack-include-assets-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); // 拆分css样式的插件 // const ExtractTextWebpackPlugin = require('extract-text-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); const AssetsPlugin = require('assets-webpack-plugin'); // const CompressionPlugin = require("compression-webpack-plugin"); const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); const merge = require('webpack-merge'); const multipleThemesCompile = require('webpack-multiple-themes-compile'); // const themes = require('../src/less/themes.config.js'); const THEME_PATH = './src/less/themes'; const extractLess = new ExtractTextPlugin('style.[hash].css');

const styleLoaders = [{ loader: 'css-loader' }, { loader: 'less-loader' }];

const resolveToThemeStaticPath = fileName => path.resolve(THEME_PATH, fileName); const themeFileNameSet = fs.readdirSync(path.resolve(THEME_PATH)).filter(fileName => /.less/.test(fileName)); const themePaths = themeFileNameSet.map(resolveToThemeStaticPath); console.log("themePaths-----------------" + themePaths); const getThemeName = fileName => theme-${path.basename(fileName, path.extname(fileName))};

// 全部 ExtractLessS 的集合 const themesExtractLessSet = themeFileNameSet.map(fileName => new ExtractTextPlugin(${getThemeName(fileName)}.css)) // 主题 Loader 的集合 const themeLoaderSet = themeFileNameSet.map((fileName, index) => { return { test: /.(less|css)$/, include: resolveToThemeStaticPath(fileName), loader: themesExtractLessSet[index].extract({ use: styleLoaders }) } });

module.exports = { mode: 'production', entry: { 'main': AOT ? './src/main.browser.aot.ts' : './src/main.browser.ts', 'vendor': './src/vendor.ts', 'polyfills': './src/polyfills.browser.ts', 'themes': './src/less/themes/themes.js' }, /**

/**

// module.exports = merge( // webpackConfigs, // multipleThemesCompile({ // themesConfig: themes, // // lessContent: 'body{color:@color}', // // styleLoaders: [ // // // { loader: 'style-loader'}, // // { loader: 'css-loader' }, // // { // // loader: 'less-loader' // // } // // ], // cwd: path.resolve('./'), // cacheDir: './src/less/themes' // }) // multipleThemesCompile({ // themesConfig: themes, // styleLoaders: [ // { loader: 'css-loader' }, // { // loader: 'less-loader?javascriptEnabled=true' // } // ], // lessContent: 'body{color:@mainColor}', // cwd: helpers.root('./'), // // cacheDir: 'src/less/themes', // // outputName:themeName => ${themeName}.css // }) // );

hiyangguo commented 5 years ago

@zhangy0510 你先把split chunk去掉试试。

zhangy0510 commented 5 years ago

好的,谢谢

zhangy0510 commented 5 years ago

请问下,哪一段脚本是进行less转css的啊?

zhangy0510 commented 5 years ago

split chunk去掉之后生成的css还是没有内容

hiyangguo commented 5 years ago

https://github.com/rsuite/webpack-multiple-themes-compile/blob/master/src/index.js#L43

hiyangguo commented 5 years ago

@zhangy0510 把你那些 处理 cssless 的 loader 都删掉。所有的样式都交给 multipleThemesCompile 处理。

zhangy0510 commented 4 years ago

已经解决了,谢谢~