Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/bs / dist / .plugins / entryOutput.js
Size: Mime:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = require("path");
const resolveToRoot_1 = require("../resolveToRoot");
/**
 * @see https://webpack.js.org/plugins/prefetch-plugin/
 */
function outputPlugin(config, options) {
    const { 
    // --- env
    isDev, isDevClient, isProdClient, isServer, isClient, 
    // @todo @fixme this is the wrong path
    outputPublicPath, 
    // --- definition
    bundleConfig, } = options;
    // console.log('[bundling] paths: ', {
    //   srcEntryFile: bundleConfig.srcEntryFile,
    //   outputPath: bundleConfig.outputPath,
    // })
    // @todo put in env configs...
    const bundleSrcFile = resolveToRoot_1.resolveToRoot(bundleConfig.srcEntryFile);
    const outputPath = resolveToRoot_1.resolveToRoot(bundleConfig.outputPath);
    /**
     * For our production client bundles we include a hash in the filename.
     * That way we won't hit any browser caching issues when our bundle
     * output changes.
     *
     * @note as we are using the `WebpackMd5Hash` plugin, the hashes will
     * only change when the file contents change. This means we can
     * set very aggressive caching strategies on our bundle output.
     * @see ./env.prod
     *
     * For any other bundle (typically a server/node) bundle we want a
     * determinable output name to allow for easier importing/execution
     * of the bundle by our scripts.
     */
    const filename = isProdClient ? '[name]-[hash].js' : '[name].js';
    // When targetting node we will output our bundle as a commonjs2 module.
    // @note changed dev in 3.4.0, so now just using var
    // const libraryTarget = isNode ? 'commonjs2' : 'var'
    // const libraryTarget = isServer ? 'commonjs2' : 'umd'
    const libraryTarget = isServer ? 'commonjs2' : 'var';
    // const libraryTarget = 'var'
    const output = {
        // @note made it only give pathinfo in dev
        // Add /* filename */ comments to generated require()s in the output.
        pathinfo: isDev,
        // Point sourcemap entries to original disk location (format as URL on Windows)
        devtoolModuleFilenameTemplate: info => path_1.resolve(info.absoluteResourcePath).replace(/\\/g, '/'),
        // The dir in which our bundle should be output.
        path: outputPath,
        // This does not produce a real file. It's just the virtual path that is
        // served by WebpackDevServer in development. This is the JS bundle
        // containing code from all our entry points, and the Webpack runtime.
        //
        // The filename format for our bundle's entries.
        filename,
        // The name format for any additional chunks produced for the bundle.
        chunkFilename: '[name]-[hash].js',
        /**
         * @see https://github.com/ctrlplusb/react-universally/pull/566#issuecomment-373298187
         * @api https://webpack.js.org/configuration/output/#output-hotupdatechunkfilename
         */
        hotUpdateChunkFilename: '[hash].hot-update.js',
        libraryTarget,
        publicPath: outputPublicPath,
        /**
         * @see https://stackoverflow.com/questions/49111086/webpack-4-universal-library-target
         * this is here to fix hmr universally
         */
        globalObject: 'this',
    };
    const index = [];
    // Extends hot reloading with the ability to hot path React Components.
    // This should always be at the top of your entries list. Only put
    // polyfills above it.
    if (isDevClient && process.env.IS_HMR_ENABLED) {
        console.log('WEBPACK HOT LOADER IS LOADED ========= [R.I.P.]');
        /**
         * https://github.com/facebook/react/issues/10441#issuecomment-321913131
         * https://github.com/gaearon/react-hot-loader/issues/243#issuecomment-211957140
         * https://github.com/glenjamin/webpack-hot-middleware#config
         *
         * index.push('webpack-hot-middleware/client')
         * ^ this is the same as DEV_HMR_URL but devhmrurl has reload=true and putting this here DISABLES that
         */
        index.unshift('react-hot-loader/patch');
        // @note - dev webpack is separate now...
        // @note - made it always localhost:3000 which may be a problem
        // const named = isClient ? 'client' : 'server'
        // const DEV_ABSOLUTE_URL =
        //   (process.env.SERVER_URL || 'http://localhost:3000') + webPath
        // const DEV_HMR_URL = `webpack-hot-middleware/client?path=/__webpack_hmr?name=${named}`
        // Required to support hot reloading of our client.
        // index.push(DEV_HMR_URL)
        // Include an alternative client for WebpackDevServer. A client's job is to
        // connect to WebpackDevServer by a socket and get notified about changes.
        // When you save a file, the client will either apply hot updates (in case
        // of CSS changes), or refresh the page (in case of JS changes). When you
        // make a syntax error, this client will display a syntax error overlay.
        // Note: instead of the default WebpackDevServer client, we use a custom one
        // to bring better experience for Create React App users. You can replace
        // the line below with these two lines if you prefer the stock client:
        // require.resolve('webpack-dev-server/client') + '?/',
        // require.resolve('webpack/hot/dev-server'),
        index.push(require.resolve('react-dev-utils/webpackHotDevClient'));
    }
    // The source entry file for the bundle.
    index.push(bundleSrcFile);
    const entry = {
        // We name our entry files "index" as it makes it easier for us to
        // import bundle output files (e.g. `import server from './build/server';`)
        //
        // @note
        // not sure if this ever happens except on server....
        index,
    };
    if (bundleSrcFile.includes('client')) {
        entry.main = entry.index;
        delete entry.index;
    }
    config.entry = entry;
    config.output = output;
    config.name = isClient ? 'client' : 'server';
}
exports.default = outputPlugin;
//# sourceMappingURL=entryOutput.js.map