mirror of
https://github.com/symfony/recipes.git
synced 2026-09-11 15:16:30 +03:00
[Reprise] Add recipe for 1.1.0 (#1564)
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
* Welcome to your app's main JavaScript file!
|
||||
*
|
||||
* This file will be included onto the page via the reprise_entry_script_tags('app') Twig function,
|
||||
* which should already be in your base.html.twig.
|
||||
*/
|
||||
import './styles/app.css';
|
||||
|
||||
console.log('This log comes from assets/app.js - welcome to Symfony Reprise! 🎉');
|
||||
@@ -0,0 +1,3 @@
|
||||
body {
|
||||
background-color: skyblue;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
# Reprise works with zero configuration. Every option below is shown at its
|
||||
# default value; uncomment the block and tweak what you need.
|
||||
# See https://github.com/symfony/reprise/blob/main/doc/index.rst#configuration
|
||||
# reprise:
|
||||
# Directory the @symfony/reprise plugin writes entrypoints.json and manifest.json into.
|
||||
# output_path: '%kernel.project_dir%/public/build'
|
||||
|
||||
# Throw when entrypoints.json or a requested entry is missing, instead of rendering nothing.
|
||||
# strict_mode: true
|
||||
|
||||
# A framework.assets package name used to resolve entry URLs. null uses the default package.
|
||||
# asset_package: null
|
||||
|
||||
# crossorigin attribute set alongside SRI integrity: false, 'anonymous' or 'use-credentials'.
|
||||
# crossorigin: false
|
||||
|
||||
# Register rendered assets as WebLink HTTP/2 Link: preload headers (needs symfony/web-link).
|
||||
# preload: true
|
||||
|
||||
# Default attributes added to every rendered <script> / <link> tag.
|
||||
# script_attributes: []
|
||||
# link_attributes: []
|
||||
|
||||
framework:
|
||||
assets:
|
||||
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
|
||||
|
||||
when@prod:
|
||||
reprise:
|
||||
# In prod we'd rather render nothing than let a missing entrypoints.json (or entry) take the app down with a 500.
|
||||
strict_mode: false
|
||||
|
||||
# Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
|
||||
cache: true
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"bundles": {
|
||||
"Symfony\\Reprise\\RepriseBundle": ["all"]
|
||||
},
|
||||
"copy-from-recipe": {
|
||||
"assets/": "assets/",
|
||||
"config/": "%CONFIG_DIR%/"
|
||||
},
|
||||
"aliases": ["reprise"],
|
||||
"conflict": {
|
||||
"symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0",
|
||||
"symfony/framework-bundle": "<6.4"
|
||||
},
|
||||
"gitignore": [
|
||||
"/node_modules/",
|
||||
"/%PUBLIC_DIR%/build/"
|
||||
],
|
||||
"add-lines": [
|
||||
{
|
||||
"file": "templates/base.html.twig",
|
||||
"content": [
|
||||
" {{ reprise_entry_link_tags('app') }}"
|
||||
],
|
||||
"position": "after_target",
|
||||
"target": "{% block stylesheets %}",
|
||||
"warn_if_missing": true
|
||||
},
|
||||
{
|
||||
"file": "templates/base.html.twig",
|
||||
"content": [
|
||||
" {{ reprise_entry_script_tags('app') }}"
|
||||
],
|
||||
"position": "after_target",
|
||||
"target": "{% block javascripts %}",
|
||||
"warn_if_missing": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
|
||||
<bg=blue;fg=white> </>
|
||||
<bg=blue;fg=white> Symfony Reprise </>
|
||||
<bg=blue;fg=white> </>
|
||||
|
||||
A few frontend steps remain to wire up your bundler.
|
||||
The commands below use npm (or pnpm, yarn, ...).
|
||||
|
||||
* If you don't have a bundler yet, install <fg=green>Vite</> or <fg=green>Rsbuild</>:
|
||||
|
||||
<fg=green>npm install --save-dev vite</>
|
||||
<comment># or</>
|
||||
<fg=green>npm install --save-dev @rsbuild/core</>
|
||||
|
||||
* Install the Reprise plugin:
|
||||
|
||||
<fg=green>npm install --save-dev @symfony/reprise</>
|
||||
|
||||
* Register the plugin in your bundler config:
|
||||
|
||||
<comment>// vite.config.js</>
|
||||
import { defineConfig } from 'vite'
|
||||
import Symfony from '@symfony/reprise/vite'
|
||||
|
||||
export default defineConfig({
|
||||
// If using Vite 8.2+
|
||||
input: {
|
||||
app: './assets/app.js',
|
||||
},
|
||||
// Otherwise, use `build.rollupOptions`
|
||||
// build: {
|
||||
// rollupOptions: {
|
||||
// input: {
|
||||
// app: './assets/app.js',
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
plugins: [
|
||||
Symfony({
|
||||
// Enable support for Stimulus Controller and Symfony UX
|
||||
// stimulus: './assets/controllers.json',
|
||||
}),
|
||||
],
|
||||
})
|
||||
|
||||
<comment>// rsbuild.config.js</>
|
||||
import { defineConfig } from '@rsbuild/core'
|
||||
import Symfony from '@symfony/reprise/rsbuild'
|
||||
|
||||
export default defineConfig({
|
||||
source: {
|
||||
entry: {
|
||||
app: './assets/app.js',
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
Symfony({
|
||||
// Enable support for Stimulus Controller and Symfony UX
|
||||
// stimulus: './assets/controllers.json',
|
||||
}),
|
||||
],
|
||||
})
|
||||
|
||||
* Render your assets from Twig with <fg=green>reprise_entry_link_tags('app')</> and
|
||||
<fg=green>reprise_entry_script_tags('app')</> (already added to <fg=green>templates/base.html.twig</> for you).
|
||||
|
||||
* Build your assets:
|
||||
|
||||
<fg=green>npx vite build</> <comment># or: npx rsbuild build</>
|
||||
<fg=green>npx vite</> <comment># dev server (or: npx rsbuild dev)</>
|
||||
|
||||
* Read the documentation: <comment>https://github.com/symfony/reprise</>
|
||||
Reference in New Issue
Block a user