@react-ssr/core
Version:
React SSR as a view template engine
2 lines (1 loc) • 3.77 kB
JavaScript
;function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var r=require("./register-d9711d86.js"),n=e(require("path")),s=e(require("fs-extra")),i=e(require("slash")),o=e(require("webpack")),t=require("webpack-merge"),a=e(require("mini-css-extract-plugin")),c=e(require("optimize-css-assets-webpack-plugin")),l=e(require("terser-webpack-plugin")),u=r.promise,d=function(e){var n=r.getIteratorMethod(e);if("function"!=typeof n)throw TypeError(String(e)+" is not iterable");return r.anObject(n.call(e))};var p=function(e,n){if(void 0!==r.symbol&&r.isIterable(Object(e))){var s=[],i=!0,o=!1,t=void 0;try{for(var a,c=d(e);!(i=(a=c.next()).done)&&(s.push(a.value),!n||s.length!==n);i=!0);}catch(e){o=!0,t=e}finally{try{i||null==c.return||c.return()}finally{if(o)throw t}}return s}};var f=function(e,n){return r.arrayWithHoles(e)||p(e,n)||r.unsupportedIterableToArray(e,n)||r.nonIterableRest()},b=process.cwd(),g={performance:{hints:"warning"},output:{pathinfo:!1},optimization:{nodeEnv:"production",namedModules:!1,namedChunks:!1,flagIncludedChunks:!0,occurrenceOrder:!0,sideEffects:!0,usedExports:!0,concatenateModules:!1,splitChunks:{minSize:3e4,maxAsyncRequests:5,maxInitialRequests:3},minimize:!0,minimizer:[new c,new l]},plugins:[new o.DefinePlugin({"process.env.NODE_ENV":r.stringify("production")})]},m=process.cwd(),j="."+r.getEngine(),y=function(){var e=r.asyncToGenerator(r.regenerator.mark((function e(o){var t,a,c,l,u,d,p,f,b,g,y,v,w;return r.regenerator.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,r.getPages();case 3:for(a=e.sent,c=n.resolve(__dirname,"../../lib/webpack/".concat(r.ssrConfig.id,".js")),l=s.readFileSync(c).toString(),u=n.join(__dirname,"app.js"),s.existsSync(n.join(m,r.ssrConfig.viewsDir,"_app".concat(j)))&&(u=n.join(m,r.ssrConfig.viewsDir,"_app".concat(j))),o.mkdirpSync(n.join(m,"react-ssr-src")),d=0;d<a.length;d++)g=a[d],y=r.getPageId(g,"/"),v=n.dirname(y),w=n.basename(y),"."!==v&&o.mkdirpSync(n.join(m,"react-ssr-src",v)),o.writeFileSync(n.join(m,"react-ssr-src",v,r.concat(p="entry-".concat(w)).call(p,j)),l.replace("__REACT_SSR_APP__",i(u)).replace("__REACT_SSR_PAGE__",i(g))),t[r.getPageId(g,"_")]=r.concat(f=r.concat(b="./react-ssr-src/".concat(i(v),"/entry-")).call(b,w)).call(f,j);return e.abrupt("return",[t,a]);case 11:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}();exports.configureWebpack=function(e){var s={mode:"development",devtool:!r.isProd()&&"eval-source-map",entry:e,output:{path:n.join(b,r.ssrConfig.distDir),filename:"[name].js"},resolve:{extensions:[".js",".jsx",".ts",".tsx"]},module:{rules:[{test:/\.(js|ts)x?$/i,exclude:/node_modules/,use:{loader:require.resolve("babel-loader"),options:{cacheDirectory:!0,extends:r.existsSync(n.join(b,".babelrc"))?n.join(b,".babelrc"):r.existsSync(n.join(b,".babelrc.js"))?n.join(b,".babelrc.js"):r.existsSync(n.join(b,"babel.config.js"))?n.join(b,"babel.config.js"):n.join(__dirname,"../../lib/babel.js")}}},{test:/\.css$/i,use:[{loader:a.loader,options:{publicPath:n.join(b,r.ssrConfig.distDir),hmr:!r.isProd(),reloadAll:!0}},{loader:require.resolve("css-loader")}]},{test:/\.scss$/i,use:[{loader:a.loader,options:{publicPath:n.join(b,r.ssrConfig.distDir),hmr:!r.isProd(),reloadAll:!0}},{loader:require.resolve("css-loader")},{loader:require.resolve("sass-loader"),options:{sourceMap:!r.isProd()}}]}]},plugins:[new a({filename:"[name].css",chunkFilename:"[id].css",ignoreOrder:!0})]};return r.isProd()&&(s=t.smart(s,g)),r.ssrConfig.webpack&&("function"==typeof r.ssrConfig.webpack?s=r.ssrConfig.webpack(s,r.isProd()?"production":"development"):console.warn("[ warn ] ssr.config.js#webpack must be a function")),s},exports.getEntry=y,exports.promise=u,exports.slicedToArray=f;