【问题标题】:SyntaxError when purifying with Silverstripe templates (purifycss-webpack-plugin, webpack, Silverstripe template)使用 Silverstripe 模板(purifycss-webpack-plugin、webpack、Silverstripe 模板)进行净化时出现语法错误
【发布时间】:2018-08-17 17:00:11
【问题描述】:

我尝试将 purifycss-webpack 与 webpack 和 silverstripe 模板一起使用。 Purifycss 文档说它可以与模板和任何使用 CSS 选择器的东西一起使用。我把一切都准备好了。当我尝试运行它时,我得到了这个错误:

(function (exports, require, module, __filename, __dirname) { <section
SyntaxError: Unexpected token <

所以对我来说,模板似乎无法阅读。

这是我的 webpack 配置:

const glob = require('glob-all');
const path = require('path')
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack- 
plugin');
const {ImageminWebpackPlugin} = require("imagemin-webpack");
const imageminOptipng = require("imagemin-optipng");
const imageminGifsicle = require("imagemin-gifsicle");
const imageminJpegtran = require("imagemin-jpegtran");
const imageminSvgo = require("imagemin-svgo");
const PurifyCSSPlugin = require('purifycss-webpack');

module.exports = {
  entry: {
    app: ['./src/js/entry.js', './src/css/main.scss'],
},
output: {
    filename: "js/[name].min.js",
    path: path.resolve(__dirname, "./dist"),
},
mode: 'production',
module: {
    rules: [
        {
            test: /\.ss/,
            loader: 'silverstripe-template-loader'
        },
        {
            test: /\.(scss|css)$/,
            use: [
                {
                    loader: 'style-loader'
                },
                {
                    loader: MiniCssExtractPlugin.loader
                },
                {
                    loader: 'css-loader',
                    options: {
                        sourceMap: true
                    }
                },
                {
                    loader: 'resolve-url-loader',
                },
                {
                    loader: 'sass-loader',
                    options: {
                        sourceMap: true
                    }
                }
            ]

        },
        {
            test: /\.js$/,
            exclude: /(node_modules)/,
            use: {
                loader: 'babel-loader',
                options: {
                    presets: ['babel-preset-env']
                }
            }
        },
        {
            test: /\.(png|svg|jpe?g|gif)$/,
            loader: 'file-loader',
            options: {
                name: 'images/[name].[ext]',
                publicPath: '/public/dist/',
            }
        },
    ]
},
plugins: [
    new CleanWebpackPlugin(['dist']),
    new MiniCssExtractPlugin({
        filename: 'css/[name].min.css',
        chunkFilename: "[id].css"
    }),
    new PurifyCSSPlugin({
        paths:  glob.sync([
      path.join(require('/Users/foobar/Desktop/hsb/www/app/templates/DNADesign/Elemental/Layout/FBNewsHolder.ss')),
        ]),
    }),
    new ImageminWebpackPlugin({
        imageminOptions: {
            plugins:[
                imageminOptipng({
                    optimizationLevel: 5
                }),
                imageminGifsicle({
                    interlaced: true
                }),
                imageminJpegtran({
                    progressive: true
                }),
                imageminSvgo({
                    removeViewBox: true
                })
            ]
        }
    })
  ],
}

是他们将 purifycss 与 silverstripe tempaltes 一起使用的一种方式。
谁能帮我解决这个问题???

【问题讨论】:

    标签: webpack silverstripe webpack-4


    【解决方案1】:

    我成功了。以防万一有人遇到同样的问题,她是我的 webpack 配置,可以工作

    const glob = require('glob-all');
    const path = require('path')
    const MiniCssExtractPlugin = require('mini-css-extract-plugin');
    const CleanWebpackPlugin = require('clean-webpack-plugin');
    const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
    const {ImageminWebpackPlugin} = require("imagemin-webpack");
    const imageminOptipng = require("imagemin-optipng");
    const imageminGifsicle = require("imagemin-gifsicle");
    const imageminJpegtran = require("imagemin-jpegtran");
    const imageminSvgo = require("imagemin-svgo");
    const PurifyCSSPlugin = require("purifycss-webpack");
    const PATHS = path.join(__dirname, '../../www/app/templates/');
    
    
    
    module.exports = {
        entry: {
            app: ['./src/js/entry.js', './src/css/main.scss'],
        },
        output: {
            filename: "js/[name].min.js",
            path: path.resolve(__dirname, "./dist"),
        },
        mode: 'production',
        module: {
            rules: [
                {
                    test: /\.ss/,
                    loader: 'silverstripe-template-loader'
                },
                {
                    test: /\.(scss|css)$/,
                    use: [
                        {
                            loader: 'style-loader'
                        },
                        {
                            loader: MiniCssExtractPlugin.loader
                        },
                        {
                            loader: 'css-loader',
                            options: {
                                sourceMap: true
                            }
                        },
                        {
                            loader: 'resolve-url-loader',
                        },
                        {
                            loader: 'sass-loader',
                            options: {
                                sourceMap: true
                            }
                        }
                    ]
    
                },
                {
                    test: /\.js$/,
                    exclude: /(node_modules)/,
                    use: {
                        loader: 'babel-loader',
                        options: {
                            presets: ['babel-preset-env']
                        }
                    }
                },
                {
                    test: /\.(png|svg|jpe?g|gif)$/,
                    loader: 'file-loader',
                    options: {
                        name: 'images/[name].[ext]',
                        publicPath: '/public/dist/',
                    }
                },
            ]
        },
        plugins: [
            new CleanWebpackPlugin(['dist']),
            new MiniCssExtractPlugin({
                filename: 'css/[name].min.css',
                chunkFilename: "[id].css"
            }),
            new PurifyCSSPlugin({
                paths:  glob.sync([
                    path.join(PATHS + 'DNADesign/Elemental/Layout/FBNewsHolder.ss'),
                ]),
    
            }),
            new ImageminWebpackPlugin({
                imageminOptions: {
                    plugins:[
                        imageminOptipng({
                            optimizationLevel: 5
                        }),
                        imageminGifsicle({
                            interlaced: true
                        }),
                        imageminJpegtran({
                            progressive: true
                        }),
                        imageminSvgo({
                            removeViewBox: true
                        })
                    ]
                }
            })
        ],
    }
    

    我不知道如何使用节点路径模块。这就是问题所在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2020-12-15
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多