UNPKG

plotly-icons

Version:
52 lines (41 loc) 2.06 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _path = require('path'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // This plugin modifies the require-ensure code generated by Webpack // to work with Next.js SSR var NextJsSsrImportPlugin = function () { function NextJsSsrImportPlugin() { (0, _classCallCheck3.default)(this, NextJsSsrImportPlugin); } (0, _createClass3.default)(NextJsSsrImportPlugin, [{ key: 'apply', value: function apply(compiler) { compiler.plugin('compilation', function (compilation) { compilation.mainTemplate.plugin('require-ensure', function (code, chunk) { // Update to load chunks from our custom chunks directory var outputPath = (0, _path.resolve)('/'); var pagePath = (0, _path.join)('/', (0, _path.dirname)(chunk.name)); var relativePathToBaseDir = (0, _path.relative)(pagePath, outputPath); // Make sure even in windows, the path looks like in unix // Node.js require system will convert it accordingly var relativePathToBaseDirNormalized = relativePathToBaseDir.replace(/\\/g, '/'); var updatedCode = code.replace('require("./"', 'require("' + relativePathToBaseDirNormalized + '/"'); // Replace a promise equivalent which runs in the same loop // If we didn't do this webpack's module loading process block us from // doing SSR for chunks updatedCode = updatedCode.replace('return Promise.resolve();', 'return require(\'next/dynamic\').SameLoopPromise.resolve();'); return updatedCode; }); }); } }]); return NextJsSsrImportPlugin; }(); exports.default = NextJsSsrImportPlugin;