2.0.1 • Published 9 months ago

click-to-react-component-next v2.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
9 months ago

click-to-component-next (aka fork)

npm Release

Option+Click or Alt+Click a Component in the browser to instantly goto the source in your editor.

Next.js Demo

Features

  • Option+Click or Alt+Click opens the immediate Component's source
  • Option+RightClick or Alt+RightClick opens a context menu with the parent Components' props, fileName, columnNumber, and lineNumber

    props

  • Works with frameworks like Next.js, Create React App, & Vite that use @babel/plugin-transform-react-jsx-source

  • Works with RSBuild with plugin-react out of the box
  • Supports vscode & vscode-insiders & webstorm & cursor URL handling
  • Automatically tree-shaken from production builds
  • Keyboard navigation in context menu (e.g. , , )
  • More context & faster than using React DevTools:

    React DevTools

Installation

npm install click-to-react-component-next
pnpm add click-to-react-component-next
yarn add click-to-react-component-next

Even though click-to-react-component-next is added to dependencies, tree-shaking will remove click-to-react-component-next from production builds.

Usage

/src/index.js

+import { ClickToComponent } from 'click-to-react-component-next';
 import React from 'react';
 import ReactDOM from 'react-dom/client';
 import './index.css';
@@ -8,7 +7,6 @@ import reportWebVitals from './reportWebVitals';
 const root = ReactDOM.createRoot(document.getElementById('root'));
 root.render(
   <React.StrictMode>
+    <ClickToComponent />
     <App />
   </React.StrictMode>
 );

Create React App Demo

pages/_app.tsx

+import { ClickToComponent } from 'click-to-react-component-next'
 import type { AppProps } from 'next/app'
 import '../styles/globals.css'

 function MyApp({ Component, pageProps }: AppProps) {
   return (
     <>
+      <ClickToComponent />
       <Component {...pageProps} />
     </>
   )

Next.js Demo

+import { ClickToComponent } from "click-to-react-component-next";
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import "./index.css";

ReactDOM.createRoot(document.getElementById("root")!).render(
  <React.StrictMode>
    <App />
+   <ClickToComponent />
  </React.StrictMode>
);

Vite Demo

npm install @babel/plugin-transform-react-jsx-source

babel.config.js:

module.exports = {
  presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
  plugins: [
    ...(process.env.BABEL_ENV === 'development'
      ? ['@babel/plugin-transform-react-jsx-source']
      : []),
  ],
}

src/theme/Root.js:

import { ClickToComponent } from 'click-to-react-component-next'
import React from 'react'

// Default implementation, that you can customize
export default function Root({ children }) {
  return (
    <>
      <ClickToComponent />
      {children}
    </>
  )
}

editor

By default, the editor is set to vscode.

But you can choose between webstorm, cursor and vscode-insider too.

-<ClickToComponent />
+<ClickToComponent editor="vscode-insiders" />

If you are using another editor, you can use the getEditorUrl prop to define your own editor.

getEditorUrl

If you want to define your own editor, you can use the getEditorUrl prop to define your own editor. This function will be called with the path, line, and column of the target file.

<ClickToComponent
  getEditorUrl={(path, line, column) => {
    return `my-editor://open?file=${path}&line=${line}&column=${column}`
  }}
/>

Run Locally

Clone the project

gh repo clone alexgorbatchev/click-to-component-next

Go to the project directory

cd click-to-component

Install dependencies

pnpm install

Run one of the examples:

cd apps/cra
pnpm start
cd apps/next
pnpm dev
2.0.1

9 months ago

2.0.0

9 months ago