diff --git a/examples/support-yarn2-pnp/.gitignore b/examples/support-yarn2-pnp/.gitignore new file mode 100644 index 00000000..dc37e055 --- /dev/null +++ b/examples/support-yarn2-pnp/.gitignore @@ -0,0 +1,8 @@ +node_modules +.pnp/* +!.pnp/releases +!.pnp/plugins +!.pnp/sdks +!.pnp/versions +.pnp.* +.ssr diff --git a/examples/support-yarn2-pnp/package.json b/examples/support-yarn2-pnp/package.json new file mode 100644 index 00000000..188762e7 --- /dev/null +++ b/examples/support-yarn2-pnp/package.json @@ -0,0 +1,18 @@ +{ + "private": true, + "name": "support-yarn2-pnp", + "scripts": { + "dev": "node server.js" + }, + "dependencies": { + "@react-ssr/core": "latest", + "@react-ssr/express": "latest", + "express": "^4.17.1", + "pnp-webpack-plugin": "^1.6.4", + "react": "^16.13.1", + "react-dom": "^16.13.1" + }, + "installConfig": { + "pnp": true + } +} diff --git a/examples/support-yarn2-pnp/server.js b/examples/support-yarn2-pnp/server.js new file mode 100644 index 00000000..4a4cc8b8 --- /dev/null +++ b/examples/support-yarn2-pnp/server.js @@ -0,0 +1,17 @@ +const express = require('express'); +const register = require('@react-ssr/express/register'); + +const app = express(); + +(async () => { + await register(app); + + app.get('/', (req, res) => { + const user = { name: 'World' }; + res.render('index', { user }); + }); + + app.listen(3000, () => { + console.log('> Ready on http://localhost:3000'); + }); +})(); diff --git a/examples/support-yarn2-pnp/ssr.config.js b/examples/support-yarn2-pnp/ssr.config.js new file mode 100644 index 00000000..9f966f6a --- /dev/null +++ b/examples/support-yarn2-pnp/ssr.config.js @@ -0,0 +1,17 @@ +const PnpWebpackPlugin = require('pnp-webpack-plugin'); + +module.exports = { + webpack: (config) => { + config.resolve.plugins = [ + ...(config.resolve.plugins || []), + PnpWebpackPlugin, + ]; + + config.resolveLoader.plugins = [ + ...(config.resolveLoader.plugins || []), + PnpWebpackPlugin.moduleLoader(module), + ]; + + return config; + }, +}; diff --git a/examples/support-yarn2-pnp/views/index.jsx b/examples/support-yarn2-pnp/views/index.jsx new file mode 100644 index 00000000..5777759e --- /dev/null +++ b/examples/support-yarn2-pnp/views/index.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { Head } from '@react-ssr/express'; + +const Index = ({ user }) => { + const [message, setMessage] = React.useState('waiting...'); + + const onClick = () => setMessage('This is a react-ssr!'); + + return ( + + + + basic-jsx - @react-ssr/express + + +

Hello {user.name}!

+ +

Message from state: {message}

+
+ ); +}; + +export default Index;