Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

craco-preact

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

craco-preact

A Preact plugin for craco / react-scripts / create-react-app

  • 1.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
3
increased by50%
Maintainers
1
Weekly downloads
 
Created
Source

Build Status Coverage Status MIT License

Craco Preact Plugin

This is a craco plugin that sets up Preact for create-react-app version >= 2.

This plugin add the preact-compat alias so that import React from 'react' will be translated to import React from 'preact-compat'. (preact-compat is a drop-in replacement for React with the same API.)

Use react-app-rewired for create-react-app version 1.

Supported Versions

craco-preact is tested with:

  • preact: ^8.3.1
  • preact-compat: ^3.18.4
  • react-scripts: ^2.1.1
  • @craco/craco: ^2.2.3

Installation

First, follow the craco Installation Instructions to install the craco package, create a craco.config.js file, and modify the scripts in your package.json.

Then install craco-preact:

$ yarn add craco-preact

# OR

$ npm i -S craco-preact

Usage

Here is a complete craco.config.js configuration file that adds preact-compat to the create-react-app webpack config:

module.exports = {
  plugins: [{ plugin: require("craco-preact") }]
};

This plugin does not have any options.

View the "Switching to Preact" Documentation.

Why did you release this as a plugin? Isn't it just adding one line to my craco config?

Yes, it's really easy to add the preact-compat alias to your craco.config.js:

module.exports = {
  webpack: {
    alias: { react: "preact-compat", "react-dom": "preact-compat" }
  }
};

However, create-react-app, craco, or webpack will probably change something in the future, and then you'll have to search GitHub and StackOverflow to figure out why your app is broken.

If you are using the craco-preact plugin, you can simply run:

$ yarn upgrade craco-preact

# OR

$ npm update craco-preact

The craco plugin API is far less likely to change, so it will be easy to update to the latest versions of create-react-app, webpack, craco, preact, and craco-preact. You just need to run yarn upgrade.

Also note that craco-preact includes preact and preact-compat as a dependency, so you don't need to add these libraries to your own package.json.

The craco-preact repository (and this README) can also serve as a central source of information for anyone who is interested in using Preact with create-react-app. Please feel free to open an issue if you have any questions or suggestions.

FormAPI is committed to maintaining the craco-preact plugin. We will update this plugin (and documentation) so that it works with the latest versions of react-scripts (from create-react-app), and craco. Please open an issue if something breaks, and we'll fix it as soon as possible.

Should I use the preact-compat alias?

If you are using a React component library such as Ant Design, these React components should work out of the box with the preact-compat alias. However, Preact does not currently support some of the very latest features in React 16+, such as Hooks and Suspense. Here is the Preact GitHub issue about adding the Hooks API. Here are some more Preact issues about supporting other features in React 16+:

(We have subscribed to these issues, and will update this README if anything changes.)

If you are building a new Preact app from scratch, then you don't need any React libraries, then you don't need the craco-preact plugin. Instead, you should follow the Preact "Getting Started" documentation.

You should still be able to use the create-react-app webpack config with a native Preact application. Just be aware that npm install will always install an unused copy of React, because this is a dependency of react-scripts. This is not an issue. React will not be included in your webpack build unless you explicitly require it with an import statement. (If you use the craco-preact plugin, then all import 'react' statements are translated to import 'preact'.)

Further Configuration

If you need to configure anything else for the webpack build, take a look at the Configuration Overview section in the craco README. You can use CracoPreactPlugin while making other changes to babel and webpack, etc.

Contributing

Install dependencies:

$ yarn install

# OR

$ npm install

Run tests:

$ yarn test

Before submitting a pull request, please check the following:

  • All tests are passing
    • Run yarn test
  • 100% test coverage
    • Coverage will be printed after running tests.
    • Open the coverage results in your browser: open coverage/lcov-report/index.html
  • All code is formatted with Prettier
    • Run prettier --write **/*.js
    • If you use VS Code, I recommend enabling the formatOnSave option.

License

MIT

Keywords

FAQs

Package last updated on 14 Nov 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc