ElemeFE / obsolete-webpack-plugin

🌈 A Webpack plugin generates a browser-side standalone script that detects browser compatibility based on `Browserslist` and prompts website users to upgrade it.
MIT License
184 stars 14 forks source link

Plugin doesn't generate js file #11

Open Teddy95 opened 5 years ago

Teddy95 commented 5 years ago

Environment

Current Behavior

Plugin doesn't generate a standalone JavaScript file.

Expected Behavior

Plugin should create a standalone JavaScript file.

Detailed Description

Here is my webpack.config.js:

/**
* Autor: Andre Sieverding
* Copyright © 2019
*/

const path = require('path')
const fs = require('fs')
const webpack = require('webpack')
const nodeExternals = require('webpack-node-externals')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const ObsoleteWebpackPlugin = require('obsolete-webpack-plugin')

// Get app configurations
var config = fs.readFileSync('config.json')
config = JSON.parse(config)

// Get node environment
const { NODE_ENV } = process.env
const isDev = NODE_ENV === 'development'
const env = isDev ? 'development' : 'production'

// Define webpack rules
const markoRule = {
    test: /\.marko?$/,
    loader: '@marko/webpack/loader'
}

const styleRule = {
    test: /\.(sass|scss|css)$/,
    use: [
        'style-loader',
        'css-loader',
        'sass-loader'
    ]
}

const vectorRule = {
    test: /\.svg/,
    loader: 'svg-url-loader'
}

const imageRule = {
    test: /\.(jpg|jpeg|gif|png|ico)$/,
    use: [
        {
            loader: 'file-loader',
            options: {
                name: 'images/[name]-[hash:8].[ext]'
            }
        }
    ]
}

const fontRule = {
    test: /\.(woff|woff2|ttf|eot)$/,
    use: [
        {
            loader: 'file-loader',
            options: {
                name: 'webfonts/[name]-[hash:8].[ext]'
            }
        }
    ]
}

// Webpack config for browser
const client = {
    name: 'Client',
    mode: env,
    entry: {
        app: isDev ? [
            'webpack-hot-middleware/client?reload=true',
            './app/client.js'
        ]: ['./app/client.js']
    },
    output: {
        filename: '[name].js',
        path: path.resolve(__dirname, 'dist'),
        publicPath: config.path + '/assets/'
    },
    devServer: isDev ? {
        contentBase: path.join(__dirname, 'dist'),
        historyApiFallback: true,
        overlay: true,
        hot: true,
        stats: 'minimal',
    } : undefined,
    devtool: isDev ? 'source-map' : undefined,
    resolve: {
        extensions: ['.js', '.json', '.marko']
    },
    module: {
        rules: [markoRule, styleRule, vectorRule, imageRule, fontRule]
    },
    plugins: [
        new webpack.ProvidePlugin({
            $: 'jquery',
            jQuery: 'jquery'
        }),
        new MiniCssExtractPlugin({
            filename: '[name].css'
        }),
        new ObsoleteWebpackPlugin({
            name: 'outdatedBrowser',
            promptOnNonTargetBrowser: true,
            template: '<div id="outdated"><h6>Dein Browser ist veraltet!</h6><p>Aktualisiere deinen Browser um diese Webanwendung zu verwenden. <a id="btnUpdateBrowser" href="http://fsg-vm-sccm/CMApplicationCatalog/#/SoftwareLibrary/AppListPageView.xaml">Browser jetzt updaten</a></p><p class="last"><a id="obsoleteClose" href="#" title="Schließen">&times;</a></p></div>'
        }),
        isDev && new webpack.HotModuleReplacementPlugin()
    ].filter(Boolean)
}

// Webpack config for server
const server = {
    name: 'Server',
    mode: env,
    target: 'node',
    externals: nodeExternals(),
    entry: {
        server: ['./app/server.js']
    },
    output: {
        filename: '[name].js',
        path: path.resolve(__dirname, 'dist'),
    },
    resolve: {
        extensions: ['.js', '.json', '.marko']
    },
    module: {
        rules: [markoRule, vectorRule, imageRule]
    }
}

module.exports = [
    server,
    client
]
Teddy95 commented 5 years ago

Webpack is generating the following files: Screenshot_1

Yegorich555 commented 1 year ago

Looks like the package hasn't been supported anymore. We have an improved/refactored version for webpack 5: https://github.com/AndrushkevichMikita/webpack-obsolete-plugin