React
Create a React
project based on Farm
.
Farm
provides two approaches to support creating React
projects:
- Use the
create-farm
scaffold to create a scaffold project - You can manually create a
React
project following the current documentation
Creating a React Projectâ
npm create farm@latest
Select React
template in Select Framework
Farm
requires the registration of the @farmfe/plugin-react
plugin to support React
projects.
import { defineConfig } from '@farmfe/core';
export default defineConfig({
plugins: ['@farmfe/plugin-react'],
});
The @farmfe/plugin-react
plugin is written in Rust
, so you do not need to explicitly import it; you can register it by passing a string package name.
Integrating emotionâ
You can support emotion
by registering the @swc/plugin-emotion
plugin.
import { defineConfig } from '@farmfe/core';
export default defineConfig({
compilation: {
script: {
plugins: [
{
name: '@swc/plugin-emotion',
options: {},
filters: {
moduleTypes: ['tsx'],
},
},
],
},
},
plugins: [['@farmfe/plugin-react', { "importSource": "@emotion/react" }]],
});
import { css } from '@emotion/react';
const color = 'white';
export function Main() {
return (
<div
onClick={() => setCount((c) => c + 1)}
css={css`
padding: 32px;
background-color: hotpink;
font-size: 24px;
border-radius: 4px;
&:hover {
color: ${color};
}
`}
>
{a}: {count}
</div>
);
}
Integrating svgrâ
SVGR
is a tool for transforming svgs into React components. Farm offers a Js plugin to support SVGR.
import { defineConfig } from '@farmfe/core';
import farmJsPluginSvgr from '@farmfe/js-plugin-svgr';
export default defineConfig(async (env) => {
return {
plugins: [
[
'@farmfe/plugin-react',
{
refresh: process.env.NODE_ENV === 'development',
development: process.env.NODE_ENV === 'development'
}
],
farmJsPluginSvgr()
]
};
});
If you want to start DevServer
npm dev
If you need to run the build production environment product command
npm build
If you need to preview your build product
npm preview
For more example details: React Example