如何将 create-react-app 转换为 Preact?
How to convert create-react-app to Preact?
根据 Preact 文档,要将 React 应用程序转换为 Preact,您必须为 webpack 添加别名:
{
"resolve": {
"alias": {
"react": "preact-compat",
"react-dom": "preact-compat"
}
}
}
你怎么能用 create-react-app
做到这一点,因为它隐藏了 webpack 在 react-scripts 依赖下?
谢谢!
Preact CLI 允许您在没有任何模块打包器的情况下创建 preact 应用程序。这是为 Preact 应用程序创建启动器的推荐工具。
npx preact-cli create default my-project
# Go into the generated project folder
cd my-project
# Start a development server
npm run dev
注意使用 Preact 8.x 的模板。最新版本(截至 2021 年 7 月 25 日)是 Preact X(Preact 版本 10.x)。默认模板使用 Preact X.
如果您想使用 create-react-app
制作 Preact 应用程序,您可以使用此解决方法(已记录 here):
npx create-react-app my-app --scripts-version @just-boris/preact-scripts
cd my-app
# The dependencies used by `create-react-app` are still pointing to
# react, so under root application folder it's required to run:
npm uninstall react react-dom
npm install preact
# `preact-compact` is bundled with `preact` under `preact/compact` in
# Preact X, but if you are using an older version run this:
# npm install preact-compact
这也可以用纱线来完成。
根据我的经验,使用第二种方法创建的应用程序可以无缝启动。但是,我没有尝试导入任何 complex/advanced React 组件。
我在将此类组件移植到使用 preact-cli
创建的 Preact 应用程序时遇到了问题。如果需要,我会再试一次并提供更多详细信息。
我认为最优雅的解决方案是使用customize-cra
。这样您就可以避免弹出或维护 create-react-app
.
的单独分支
- 首先,您需要安装
customize-cra
:
yarn add customize-cra react-app-rewired --D
- 然后,转到
package.json
,将 scripts
更改为以下内容(这一步很关键,但在 customize-cra
的文档中未明确提及):
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
},
- 转到项目的根目录,创建一个名为
config-overrides.js
的文件,其中包含以下内容(假设您使用的是 Preact X):
const { override, addWebpackAlias } = require('customize-cra');
module.exports = override(
addWebpackAlias({
'react': 'preact/compat',
'react-dom': 'preact/compat'
})
);
- 运行
yarn start
...瞧!
或者,您可以使用 craco:
// craco.config.js
module.exports = {
webpack: {
alias: {
"react": "preact/compat",
"react-dom": "preact/compat"
}
}
}
注意:添加preact
![=20=后不要卸载react
、@types/react
或@types/react-dom
]
react
仍然需要 react-scripts
到 运行 craco start
和朋友。
@types/*
仍然需要您 IDE 的类型建议。
注意:捆绑包分析器 may still report that you're using React!
确保 double-check 您的输出目录以获得实际构建大小。
根据 Preact 文档,要将 React 应用程序转换为 Preact,您必须为 webpack 添加别名:
{
"resolve": {
"alias": {
"react": "preact-compat",
"react-dom": "preact-compat"
}
}
}
你怎么能用 create-react-app
做到这一点,因为它隐藏了 webpack 在 react-scripts 依赖下?
谢谢!
Preact CLI 允许您在没有任何模块打包器的情况下创建 preact 应用程序。这是为 Preact 应用程序创建启动器的推荐工具。
npx preact-cli create default my-project
# Go into the generated project folder
cd my-project
# Start a development server
npm run dev
注意使用 Preact 8.x 的模板。最新版本(截至 2021 年 7 月 25 日)是 Preact X(Preact 版本 10.x)。默认模板使用 Preact X.
如果您想使用 create-react-app
制作 Preact 应用程序,您可以使用此解决方法(已记录 here):
npx create-react-app my-app --scripts-version @just-boris/preact-scripts
cd my-app
# The dependencies used by `create-react-app` are still pointing to
# react, so under root application folder it's required to run:
npm uninstall react react-dom
npm install preact
# `preact-compact` is bundled with `preact` under `preact/compact` in
# Preact X, but if you are using an older version run this:
# npm install preact-compact
这也可以用纱线来完成。
根据我的经验,使用第二种方法创建的应用程序可以无缝启动。但是,我没有尝试导入任何 complex/advanced React 组件。
我在将此类组件移植到使用 preact-cli
创建的 Preact 应用程序时遇到了问题。如果需要,我会再试一次并提供更多详细信息。
我认为最优雅的解决方案是使用customize-cra
。这样您就可以避免弹出或维护 create-react-app
.
- 首先,您需要安装
customize-cra
:
yarn add customize-cra react-app-rewired --D
- 然后,转到
package.json
,将scripts
更改为以下内容(这一步很关键,但在customize-cra
的文档中未明确提及):
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
},
- 转到项目的根目录,创建一个名为
config-overrides.js
的文件,其中包含以下内容(假设您使用的是 Preact X):
const { override, addWebpackAlias } = require('customize-cra');
module.exports = override(
addWebpackAlias({
'react': 'preact/compat',
'react-dom': 'preact/compat'
})
);
- 运行
yarn start
...瞧!
或者,您可以使用 craco:
// craco.config.js
module.exports = {
webpack: {
alias: {
"react": "preact/compat",
"react-dom": "preact/compat"
}
}
}
注意:添加preact
![=20=后不要卸载react
、@types/react
或@types/react-dom
]
react
仍然需要 react-scripts
到 运行 craco start
和朋友。
@types/*
仍然需要您 IDE 的类型建议。
注意:捆绑包分析器 may still report that you're using React!
确保 double-check 您的输出目录以获得实际构建大小。