Skip to content

Commit

Permalink
chore: try full bundle
Browse files Browse the repository at this point in the history
  • Loading branch information
hunghg255 committed Jan 4, 2025
1 parent 87f6911 commit cb0e385
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 6 deletions.
8 changes: 8 additions & 0 deletions docs/guide/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@ const App = () => {
};
```

## Import full bundle

- There are error when install by yarn, you can import full bundle by using `bundle/full` path

```tsx
import RichTextEditor from 'reactjs-tiptap-editor/bundle/full'
```

## Props

```ts
Expand Down
20 changes: 15 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,30 @@
"name": "reactjs-tiptap-editor",
"type": "module",
"version": "0.1.11",
"main": "./lib/reactjs-tiptap-editor.cjs",
"module": "./lib/reactjs-tiptap-editor.js",
"main": "./lib/index.cjs",
"module": "./lib/index.js",
"types": "./lib/index.d.ts",
"description": "A modern WYSIWYG rich text editor based on tiptap and shadcn ui for React",
"packageManager": "pnpm@9.15.0",
"exports": {
".": {
"import": {
"types": "./lib/index.d.ts",
"default": "./lib/reactjs-tiptap-editor.js"
"default": "./lib/index.js"
},
"require": {
"types": "./lib/index.d.cts",
"default": "./lib/reactjs-tiptap-editor.cjs"
"default": "./lib/index.cjs"
}
},
"./bundle/full": {
"import": {
"types": "./lib/index.d.ts",
"default": "./lib/bundle-full.js"
},
"require": {
"types": "./lib/index.d.cts",
"default": "./lib/bundle-full.cjs"
}
},
"./style.css": {
Expand All @@ -35,7 +45,7 @@
"node": ">=18.0.0"
},
"scripts": {
"build:lib": "vite build && pnpm modify-css",
"build:lib": "esno ./scripts/build.ts && pnpm modify-css",
"build:lib:dev": "vite build --mode development --watch",
"build:playground": "pnpm build:lib && pnpm --dir ./playground run build",
"docs:dev": "pnpm --parallel --filter docs... dev",
Expand Down
101 changes: 101 additions & 0 deletions scripts/build.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
import * as path from 'node:path'
import fs from 'node:fs'
import { cwd } from 'node:process'
import { build } from 'vite'

import react from '@vitejs/plugin-react'
import dts from 'vite-plugin-dts'
import tailwind from 'tailwindcss'
import autoprefixer from 'autoprefixer'
import postcssReplace from 'postcss-replace'

const imports = [
{
entry: 'src/index.ts',
fileName: 'index',
},
{
entry: 'src/bundle-full.ts',
fileName: 'bundle-full',
},
]

const __dirname = cwd()

imports.forEach(async ({ entry, fileName }) => {
const plugins: any = [react(), dts({
rollupTypes: true,
afterBuild: (emittedFiles) => {
emittedFiles.forEach((content, filePath) => {
if (filePath.endsWith('.d.ts')) {
const newFilePath = filePath.replace('.d.ts', '.d.cts')

fs.writeFileSync(newFilePath, content)
}
})
},
})]

await build({
configFile: false,
plugins,
resolve: {
alias: [{ find: '@', replacement: path.resolve(__dirname, 'src') }],
},
css: {
postcss: {
plugins: [
tailwind(),
autoprefixer(),
postcssReplace({
pattern: /(--tw|\*, ::before, ::after)/g,
data: {
'--tw': '--richtext', // Prefixing
'*, ::before, ::after': ':root', // So variables does not pollute every element
},
}),
],
},
preprocessorOptions: {
scss: {
charset: false,
api: 'modern-compiler', // or 'modern'
},
},
},
build: {
cssMinify: 'esbuild',
minify: 'esbuild',
outDir: 'lib',
lib: {
entry: path.resolve(__dirname, entry),
formats: ['es', 'cjs'],
fileName,
},
rollupOptions: {
input: {
index: path.resolve(__dirname, entry),
},
output: entry === 'src/index.ts'
? {
manualChunks(id) {
if (id.includes('@tiptap')) {
return 'tiptap'
}
if (id.includes('node_modules')) {
return 'vendor'
}
if (id.includes('src/utils')) {
return 'utils'
}
if (id.includes('src/locales')) {
return 'locales'
}
},
}
: {},
external: entry === 'src/index.ts' ? ['react', 'react-dom', 'react/jsx-runtime', 'katex', 'shiki', 'docx', '@radix-ui/react-dropdown-menu', '@radix-ui/react-icons', '@radix-ui/react-label', '@radix-ui/react-popover', '@radix-ui/react-separator', '@radix-ui/react-slot', '@radix-ui/react-switch', '@radix-ui/react-tabs', '@radix-ui/react-toast', '@radix-ui/react-toggle', '@radix-ui/react-tooltip', '@radix-ui/react-select', '@radix-ui/react-checkbox', 'react-colorful', 'scroll-into-view-if-needed', 'tippy.js', 'lucide-react', 'prosemirror-docx', 're-resizable', '@excalidraw/excalidraw', '@radix-ui/react-dialog', 'react-image-crop', 'mermaid', 'react-tweet', 'reactjs-signal'] : ['react', 'react-dom', 'react/jsx-runtime', 'katex', 'shiki', '@radix-ui/react-dropdown-menu', '@radix-ui/react-icons', '@radix-ui/react-label', '@radix-ui/react-popover', '@radix-ui/react-separator', '@radix-ui/react-slot', '@radix-ui/react-switch', '@radix-ui/react-tabs', '@radix-ui/react-toast', '@radix-ui/react-toggle', '@radix-ui/react-tooltip', '@radix-ui/react-select', '@radix-ui/react-checkbox', 'react-colorful', 'scroll-into-view-if-needed', 'tippy.js', 'lucide-react', 're-resizable', '@excalidraw/excalidraw', '@radix-ui/react-dialog', 'react-image-crop', 'mermaid', 'react-tweet', 'reactjs-signal'],
},
},
})
})
14 changes: 14 additions & 0 deletions src/bundle-full.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/* eslint-disable import/first */
export * from '@/extensions'

export { default } from '@/components/RichTextEditor'

import locale, { en, hu_HU, pt_BR, vi, zh_CN } from './locales'
import { useEditorState } from '@/hooks/useEditorState'

export { locale, en, hu_HU, vi, zh_CN, pt_BR }

export type { UseEditorStateReturn } from '@/hooks/useEditorState'
export { useEditorState }
export type { Editor, UseEditorOptions } from '@tiptap/react'
export { BubbleMenu } from '@tiptap/react'
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ export { locale, en, hu_HU, vi, zh_CN, pt_BR }

export type { UseEditorStateReturn } from '@/hooks/useEditorState'
export { useEditorState }
export type { Editor, UseEditorOptions } from '@tiptap/react'
export { BubbleMenu } from '@tiptap/react'
export type { Editor, UseEditorOptions } from '@tiptap/react'
1 change: 1 addition & 0 deletions vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ export default defineConfig(({ mode }) => {
lib: {
entry: path.resolve(__dirname, 'src/index.ts'),
formats: ['es', 'cjs'],
fileName: 'index',
},
rollupOptions: {
output: {
Expand Down

0 comments on commit cb0e385

Please sign in to comment.