Set-up SSR
This commit is contained in:
parent
47d3cae404
commit
b1eb5b0587
|
@ -10,7 +10,7 @@
|
||||||
"ext-gd": "*",
|
"ext-gd": "*",
|
||||||
"fruitcake/laravel-cors": "^2.0",
|
"fruitcake/laravel-cors": "^2.0",
|
||||||
"guzzlehttp/guzzle": "^7.0.1",
|
"guzzlehttp/guzzle": "^7.0.1",
|
||||||
"inertiajs/inertia-laravel": "^0.4.5",
|
"inertiajs/inertia-laravel": "^0.5.3",
|
||||||
"laravel/framework": "^8.65",
|
"laravel/framework": "^8.65",
|
||||||
"laravel/sanctum": "^2.11",
|
"laravel/sanctum": "^2.11",
|
||||||
"laravel/tinker": "^2.5",
|
"laravel/tinker": "^2.5",
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,62 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Server Side Rendering
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| These options configures if and how Inertia uses Server Side Rendering
|
||||||
|
| to pre-render the initial visits made to your application's pages.
|
||||||
|
|
|
||||||
|
| Do note that enabling these options will NOT automatically make SSR work,
|
||||||
|
| as a separate rendering service needs to be available. To learn more,
|
||||||
|
| please visit https://inertiajs.com/server-side-rendering
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'ssr' => [
|
||||||
|
|
||||||
|
'enabled' => true,
|
||||||
|
|
||||||
|
'url' => 'http://127.0.0.1:13714/render',
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Testing
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The values described here are used to locate Inertia components on the
|
||||||
|
| filesystem. For instance, when using `assertInertia`, the assertion
|
||||||
|
| attempts to locate the component as a file relative to any of the
|
||||||
|
| paths AND with any of the extensions specified here.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'testing' => [
|
||||||
|
|
||||||
|
'ensure_pages_exist' => true,
|
||||||
|
|
||||||
|
'page_paths' => [
|
||||||
|
|
||||||
|
resource_path('js/Pages'),
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
'page_extensions' => [
|
||||||
|
|
||||||
|
'js',
|
||||||
|
'jsx',
|
||||||
|
'svelte',
|
||||||
|
'ts',
|
||||||
|
'tsx',
|
||||||
|
'vue',
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
];
|
23
package.json
23
package.json
|
@ -2,7 +2,7 @@
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm run development",
|
"dev": "npm run development",
|
||||||
"development": "mix",
|
"development": "mix && npm run ssr:build",
|
||||||
"fix:eslint": "eslint --ext .js,.vue resources/js/ --fix",
|
"fix:eslint": "eslint --ext .js,.vue resources/js/ --fix",
|
||||||
"fix:prettier": "prettier --write --loglevel warn 'resources/js/**/*.vue'",
|
"fix:prettier": "prettier --write --loglevel warn 'resources/js/**/*.vue'",
|
||||||
"fix-code-style": "npm run fix:prettier && npm run fix:eslint",
|
"fix-code-style": "npm run fix:prettier && npm run fix:eslint",
|
||||||
|
@ -10,18 +10,22 @@
|
||||||
"watch-poll": "mix watch -- --watch-options-poll=1000",
|
"watch-poll": "mix watch -- --watch-options-poll=1000",
|
||||||
"hot": "mix watch --hot",
|
"hot": "mix watch --hot",
|
||||||
"prod": "npm run production",
|
"prod": "npm run production",
|
||||||
"production": "mix --production",
|
"production": "mix --production && npm run ssr:build",
|
||||||
"heroku-postbuild": "npm run prod"
|
"heroku-postbuild": "npm run prod",
|
||||||
|
"ssr:build": "mix --production --mix-config=webpack.ssr.mix.js",
|
||||||
|
"ssr:serve": "node public/js/ssr.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@inertiajs/inertia": "^0.10.1",
|
"@inertiajs/inertia": "^0.11.0",
|
||||||
"@inertiajs/inertia-vue3": "^0.5.2",
|
"@inertiajs/inertia-vue3": "^0.6.0",
|
||||||
"@inertiajs/progress": "^0.2.6",
|
"@inertiajs/progress": "^0.2.7",
|
||||||
|
"@inertiajs/server": "^0.1.0",
|
||||||
"@popperjs/core": "^2.11.0",
|
"@popperjs/core": "^2.11.0",
|
||||||
|
"@vue/server-renderer": "^3.2.27",
|
||||||
"autoprefixer": "^10.4.0",
|
"autoprefixer": "^10.4.0",
|
||||||
"eslint": "^8.4.1",
|
"eslint": "^8.4.1",
|
||||||
"eslint-plugin-vue": "^8.2.0",
|
"eslint-plugin-vue": "^8.2.0",
|
||||||
"laravel-mix": "^6.0.39",
|
"laravel-mix": "^6.0.41",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"postcss": "^8.4.4",
|
"postcss": "^8.4.4",
|
||||||
"postcss-import": "^12.0.1",
|
"postcss-import": "^12.0.1",
|
||||||
|
@ -30,7 +34,8 @@
|
||||||
"prettier-plugin-tailwind": "^2.2.12",
|
"prettier-plugin-tailwind": "^2.2.12",
|
||||||
"tailwindcss": "^2.0.3",
|
"tailwindcss": "^2.0.3",
|
||||||
"uuid": "^8.3.2",
|
"uuid": "^8.3.2",
|
||||||
"vue": "^3.2.24",
|
"vue": "^3.2.27",
|
||||||
"vue-loader": "^16.2.0"
|
"vue-loader": "^16.2.0",
|
||||||
|
"webpack-node-externals": "^3.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ InertiaProgress.init()
|
||||||
|
|
||||||
createInertiaApp({
|
createInertiaApp({
|
||||||
resolve: name => require(`./Pages/${name}`),
|
resolve: name => require(`./Pages/${name}`),
|
||||||
title: title => `${title} - Ping CRM`,
|
title: title => title ? `${title} - Ping CRM` : 'Ping CRM',
|
||||||
setup({ el, App, props, plugin }) {
|
setup({ el, App, props, plugin }) {
|
||||||
createApp({ render: () => h(App, props) })
|
createApp({ render: () => h(App, props) })
|
||||||
.use(plugin)
|
.use(plugin)
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
import { createSSRApp, h } from 'vue'
|
||||||
|
import { renderToString } from '@vue/server-renderer'
|
||||||
|
import { createInertiaApp } from '@inertiajs/inertia-vue3'
|
||||||
|
import createServer from '@inertiajs/server'
|
||||||
|
|
||||||
|
createServer((page) => createInertiaApp({
|
||||||
|
page,
|
||||||
|
render: renderToString,
|
||||||
|
resolve: name => require(`./Pages/${name}`),
|
||||||
|
title: title => title ? `${title} - Ping CRM` : 'Ping CRM',
|
||||||
|
setup({ app, props, plugin }) {
|
||||||
|
return createSSRApp({
|
||||||
|
render: () => h(app, props),
|
||||||
|
}).use(plugin)
|
||||||
|
},
|
||||||
|
}))
|
|
@ -13,6 +13,7 @@
|
||||||
<script src="https://polyfill.io/v3/polyfill.min.js?features=String.prototype.startsWith" defer></script>
|
<script src="https://polyfill.io/v3/polyfill.min.js?features=String.prototype.startsWith" defer></script>
|
||||||
|
|
||||||
<script src="{{ mix('/js/app.js') }}" defer></script>
|
<script src="{{ mix('/js/app.js') }}" defer></script>
|
||||||
|
@inertiaHead
|
||||||
</head>
|
</head>
|
||||||
<body class="font-sans leading-none text-gray-700 antialiased">
|
<body class="font-sans leading-none text-gray-700 antialiased">
|
||||||
@inertia
|
@inertia
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
const path = require('path')
|
|
||||||
const process = require('process')
|
const process = require('process')
|
||||||
const mix = require('laravel-mix')
|
const mix = require('laravel-mix')
|
||||||
const cssImport = require('postcss-import')
|
const cssImport = require('postcss-import')
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
const mix = require('laravel-mix')
|
||||||
|
const webpackNodeExternals = require('webpack-node-externals')
|
||||||
|
const webpackConfig = require('./webpack.config')
|
||||||
|
|
||||||
|
mix
|
||||||
|
.options({ manifest: false })
|
||||||
|
.js('resources/js/ssr.js', 'public/js')
|
||||||
|
.vue({ version: 3, options: { optimizeSSR: true } })
|
||||||
|
.webpackConfig({
|
||||||
|
...webpackConfig,
|
||||||
|
target: 'node',
|
||||||
|
externals: [webpackNodeExternals()],
|
||||||
|
})
|
Loading…
Reference in New Issue