鍍金池/ 問答/HTML5  HTML/ 關(guān)于webpack提取scss并轉(zhuǎn)換為CSS打包壓縮?

關(guān)于webpack提取scss并轉(zhuǎn)換為CSS打包壓縮?

  1. 使用Webpack^4.6.0 + React + React-router(配合react-loadable)按需加載,在生產(chǎn)環(huán)境打包編譯時(shí)壓縮CSS報(bào)錯(cuò),并且多次打包有時(shí)候可以完成,但是打包出來的CSS未壓縮,并且有些CSS文件里打包的好像是js代碼,通過服務(wù)器運(yùn)行有些樣式好像并沒有生效?
  2. 關(guān)鍵webpack配置
const extractCSS = new extractTextPlugin({
            filename: 'css/[name].[md5:contenthash:hex:8].css',
            allChunks: true
        });
const extractSCSS = new extractTextPlugin({
            filename: 'css/[name].[md5:contenthash:hex:8].css',
            allChunks: true
        });
……………………
plugins: [
        // 提取CSS文件
        extractCSS,
        extractSCSS,

        // css文件壓縮
        new optimizeCssPlugin({
            assetNameRegExp: /\.css$/g,
            cssProcessor: require('cssnano'),
            cssProcessorOptions: { discardComments: { removeAll: true } },
            canPrint: true
        }),
    ],

    module: {
        rules: [
            {
                test: /\.(js|jsx)$/,
                use: [
                    'babel-loader',
                ],
                exclude: path.resolve(__dirname,' ../../node_modules'),
            },
            {
                test: /\.scss$/,
                use: extractSCSS.extract({
                use: [
                    'css-loader',
                    'postcss-loader',
                    'sass-loader'
                    
                ],
                fallback: "style-loader",
                }),
                include: path.resolve(__dirname,' ../../client')
            },
            {
                test: /\.css$/,
                use: extractCSS.extract({
                    use: ['css-loader','postcss-loader'],
                    fallback: "style-loader",
                }),
                include:[
                    path.resolve(__dirname,' ../../client'),
                    path.join(__dirname, '../../node_modules/antd')
                ]
            },
            {
                test: /\.(png|jpg|jpeg|png|gif|woff|svg|eot|ttf)/,
                loader: 'url-loader?limit=8192&name=[name].[hash:8].[ext]&publicPath=' + webpackFiles.resourcePrefix + '&outputPath='+webpackFiles.resource+'/'
            },
            {
                test: /\.swf$/,
                loader: 'file?name=js/[name].[ext]'
            },
        ]
    }

});
  • post.config.js
module.exports = {
  plugins: [
    require('autoprefixer'),
  ]
};
  • .babelrc
{
    "presets": [

        ["es2015",{"loose":true,"modules": false}],

        "react",
     ],

    "env": {
        "development": {
            "presets": ["stage-2","react-hmre"]
        },
        "production": {
            "presets": ["stage-2"],
        }
    },
    
    "plugins": [
        ["import", {"libraryName": "antd", "libraryDirectory": "es", "style": "css"}],
        
    ]
}
  1. 路由按需加載
/*---------按需加載組件---------------*/
const Index = Loadable({
  loader: () => import('../views/index'),
  loading: loadingComponent
});

const Detail= Loadable({
  loader: () => import('../views/detail'),
  loading: loadingComponent
});

const Login= Loadable({
  loader: () => import('../views/login'),
  loading: loadingComponent
});
const Product= Loadable({
  loader: () => import('../views/product'),
  loading: loadingComponent
});
const Regist= Loadable({
  loader: () => import('../views/regist/regist'),
  loading: loadingComponent
});
const Seller= Loadable({
  loader: () => import('../views/userInfo/user'),
  loading: loadingComponent
});
const UserSet= Loadable({
  loader: () => import('../views/userSet'),
  loading: loadingComponent
});
  1. 報(bào)錯(cuò)截圖

圖片描述

  1. 另外使用react-loadable按需加載js打包正常,命名可以自己定義嗎?求解………………
回答
編輯回答
薔薇花

webpack4+的extractTextPlugin已經(jīng)被廢棄了。代替方案為mini-css-extract-plugin

2017年3月22日 12:02