如何将 create-react-app 转换为 Preact?

IT技术 reactjs webpack create-react-app preact
2021-04-28 06:42:19

根据 Preact 文档,要将 React 应用程序转换为 Preact,您必须为 webpack 设置别名:

{
  "resolve": {
    "alias": {
      "react": "preact-compat",
      "react-dom": "preact-compat"
    }
  }
}

你怎么能做到这一点,create-react-app因为它隐藏了 react-scripts 依赖下的 webpack?

谢谢!

2个回答

我认为最优雅的解决方案是使用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……瞧!

Preact CLI,让您没有任何module捆扎机创建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 的模板。最新版本(截至 21 年 7 月 25 日)是 Preact X(Preact 版本 10.x)。默认模板使用 Preact X。

如果你想用来create-react-app制作 Preact 应用程序,你可以使用这个解决方法(记录在这里):

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

这也可以用纱线来完成。

根据我的经验,使用第二种方法创建的应用程序可以无缝启动。但是,我没有尝试导入任何复杂/高级的 React 组件。我在将这些组件移植到使用preact-cli. 如果需要,我会再试一次并提供更多详细信息。