Skip to content

Commit 05c4ca8

Browse files
committed
feat: add imports for default extensions
1 parent 5ab4595 commit 05c4ca8

File tree

6 files changed

+161
-25
lines changed

6 files changed

+161
-25
lines changed

package.json

+6-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"scripts": {
2121
"prepack": "nuxt-module-build build",
2222
"dev": "nuxi dev playground",
23-
"dev:build": "nuxi build playground",
23+
"build": "nuxi build playground",
2424
"dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
2525
"release": "npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags",
2626
"lint": "eslint .",
@@ -29,9 +29,12 @@
2929
},
3030
"dependencies": {
3131
"@nuxt/kit": "^3.8.2",
32+
"@tiptap/extension-code-block-lowlight": "^2.1.13",
33+
"@tiptap/extension-link": "^2.1.13",
3234
"@tiptap/pm": "^2.1.13",
3335
"@tiptap/starter-kit": "^2.1.13",
34-
"@tiptap/vue-3": "^2.1.13"
36+
"@tiptap/vue-3": "^2.1.13",
37+
"lowlight": "^3.1.0"
3538
},
3639
"devDependencies": {
3740
"@nuxt/devtools": "latest",
@@ -45,4 +48,4 @@
4548
"nuxt": "^3.8.2",
4649
"vitest": "^0.33.0"
4750
}
48-
}
51+
}

src/imports/defaults.ts

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
export const defaultNodes = [
2+
{ name: "Blockquote", path: "@tiptap/extension-blockquote" },
3+
{ name: "BulletList", path: "@tiptap/extension-bullet-list" },
4+
{ name: "OrderedList", path: "@tiptap/extension-ordered-list" },
5+
{ name: "ListItem", path: "@tiptap/extension-list-item" },
6+
{ name: "CodeBlock", path: "@tiptap/extension-code-block" },
7+
{ name: "Document", path: "@tiptap/extension-document" },
8+
{ name: "HardBreak", path: "@tiptap/extension-hard-break" },
9+
{ name: "Heading", path: "@tiptap/extension-heading" },
10+
{ name: "HorizontalRule", path: "@tiptap/extension-horizontal-rule" },
11+
{ name: "Paragraph", path: "@tiptap/extension-paragraph" },
12+
{ name: "Text", path: "@tiptap/extension-text" },
13+
];
14+
15+
export const defaultMarks = [
16+
{ name: "Bold", path: "@tiptap/extension-bold" },
17+
{ name: "Code", path: "@tiptap/extension-code" },
18+
{ name: "Italic", path: "@tiptap/extension-italic" },
19+
{ name: "Link", path: "@tiptap/extension-link" },
20+
{ name: "Strike", path: "@tiptap/extension-strike" },
21+
];
22+
23+
export const defaultExtensions = [
24+
{ name: "StarterKit", path: "@tiptap/starter-kit" },
25+
{ name: "BubbleMenu", path: "@tiptap/extension-bubble-menu" },
26+
{ name: "Gapcursor", path: "@tiptap/extension-gapcursor" },
27+
{ name: "FloatingMenu", path: "@tiptap/extension-floating-menu" },
28+
{ name: "Dropcursor", path: "@tiptap/extension-dropcursor" },
29+
{ name: "History", path: "@tiptap/extension-history" },
30+
];
31+
32+
export const defaultImports = [
33+
{ name: "Editor", path: "@tiptap/vue-3" },
34+
{ name: "useEditor", path: "@tiptap/vue-3" },
35+
36+
...defaultNodes,
37+
...defaultMarks,
38+
...defaultExtensions,
39+
];
40+
41+
export const defaultComponents = [
42+
{ name: "EditorContent", path: "@tiptap/vue-3" },
43+
{ name: "FloatingMenu", path: "@tiptap/vue-3" },
44+
{ name: "BubbleMenu", path: "@tiptap/vue-3" },
45+
];

src/imports/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from "./defaults";
2+
export * from "./optional";

src/imports/optional.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export const lowlightImports = [
2+
{ name: "lowlight ", path: "lowlight" },
3+
{ name: "CodeBlock", path: "@tiptap/extension-code-block" },
4+
];
5+
6+
export const optionalImports: {[key: string]: any}[] = [];
7+
export const optionalComponents: {[key: string]: any}[] = [];

src/module.ts

+46-22
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,33 @@
1-
import {
2-
defineNuxtModule,
3-
addImports,
4-
addComponent,
5-
createResolver,
6-
} from "@nuxt/kit";
1+
import { defineNuxtModule, addImports, addComponent } from "@nuxt/kit";
72

83
import { name, version } from "../package.json";
94

10-
const defaultImports = [
11-
{ name: "Editor", path: "@tiptap/vue-3" },
12-
{ name: "useEditor", path: "@tiptap/vue-3" },
13-
{ name: "StarterKit", path: "@tiptap/starter-kit" },
14-
];
15-
16-
const defaultComponents = [
17-
{ name: "EditorContent", path: "@tiptap/vue-3" },
18-
{ name: "FloatingMenu", path: "@tiptap/vue-3" },
19-
{ name: "BubbleMenu", path: "@tiptap/vue-3" },
20-
];
5+
import * as allImports from "./imports";
216

227
// Module options TypeScript interface definition
23-
export interface ModuleOptions {}
8+
9+
export interface ModuleOptions {
10+
/**
11+
* Determine if lowlight should be enabled
12+
*
13+
* @default false
14+
*/
15+
lowlight?:
16+
| boolean
17+
| {
18+
/**
19+
* Determine if lowlight should be enabled
20+
*
21+
* @default false
22+
*/
23+
enabled: boolean;
24+
/**
25+
* Languages to be loaded for highlighting
26+
*
27+
*/
28+
languages: string[];
29+
};
30+
}
2431

2532
export default defineNuxtModule<ModuleOptions>({
2633
meta: {
@@ -32,7 +39,9 @@ export default defineNuxtModule<ModuleOptions>({
3239
},
3340
},
3441
// Default configuration options of the Nuxt module
35-
defaults: {},
42+
defaults: {
43+
lowlight: false,
44+
},
3645
async setup(options, nuxt) {
3746
// const { resolve } = createResolver(import.meta.url);
3847

@@ -42,20 +51,35 @@ export default defineNuxtModule<ModuleOptions>({
4251

4352
// Do not add the extension since the `.ts` will be transpiled to `.mjs` after `npm run prepack`
4453

45-
for (const obj of defaultImports) {
54+
for (const obj of allImports.defaultImports) {
4655
addImports({
4756
as: obj.name,
4857
name: obj.name,
4958
from: obj.path,
59+
// _internal_install: obj.path,
5060
});
5161
}
5262

53-
for (const obj of defaultComponents) {
63+
for (const obj of allImports.defaultComponents) {
5464
addComponent({
65+
mode: "client",
5566
name: obj.name,
5667
export: obj.name,
5768
filePath: obj.path,
58-
mode: "client",
69+
// _internal_install: obj.path,
70+
});
71+
}
72+
73+
if (options.lowlight === false) {
74+
allImports.optionalImports.push(...allImports.lowlightImports);
75+
}
76+
77+
for (const obj of allImports.optionalImports) {
78+
addImports({
79+
as: obj.name,
80+
name: obj.name,
81+
from: obj.path,
82+
// _internal_install: obj.path,
5983
});
6084
}
6185
},

yarn.lock

+55
Original file line numberDiff line numberDiff line change
@@ -1411,6 +1411,11 @@
14111411
resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.13.tgz#0a26731ebf98ddfd268884ff1712f7189be7b63c"
14121412
integrity sha512-NkWlQ5bLPUlcROj6G/d4oqAxMf3j3wfndGOPp0z8OoXJtVbVoXl/aMSlLbVgE6n8r6CS8MYxKhXNxrb7Ll2foA==
14131413

1414+
"@tiptap/extension-code-block-lowlight@^2.1.13":
1415+
version "2.1.13"
1416+
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.1.13.tgz#91110f44d6cc8a12d95ac92aee0c848fdedefb0d"
1417+
integrity sha512-PlU0lzAEbUGqPykl7fYqlAiY7/zFRtQExsbrpi2kctSIzxC+jgMM4vEpWxLS4jZEXl7jVHvBRH6lRNINDHWmQA==
1418+
14141419
"@tiptap/extension-code-block@^2.1.13":
14151420
version "2.1.13"
14161421
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.1.13.tgz#3e441d171d3ed821e67291dbf4cbad7e2ea29809"
@@ -1468,6 +1473,13 @@
14681473
resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.13.tgz#1e9521dea002c8d6de833d9fd928d4617623eab8"
14691474
integrity sha512-HyDJfuDn5hzwGKZiANcvgz6wcum6bEgb4wmJnfej8XanTMJatNVv63TVxCJ10dSc9KGpPVcIkg6W8/joNXIEbw==
14701475

1476+
"@tiptap/extension-link@^2.1.13":
1477+
version "2.1.13"
1478+
resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.1.13.tgz#ae4abd7c43292e3a1841488bfc7a687b2f014249"
1479+
integrity sha512-wuGMf3zRtMHhMrKm9l6Tft5M2N21Z0UP1dZ5t1IlOAvOeYV2QZ5UynwFryxGKLO0NslCBLF/4b/HAdNXbfXWUA==
1480+
dependencies:
1481+
linkifyjs "^4.1.0"
1482+
14711483
"@tiptap/extension-list-item@^2.1.13":
14721484
version "2.1.13"
14731485
resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.13.tgz#3c62127df97974f3196866ec00ee397f4c9acdc4"
@@ -1585,6 +1597,13 @@
15851597
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
15861598
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
15871599

1600+
"@types/hast@^3.0.0":
1601+
version "3.0.3"
1602+
resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.3.tgz#7f75e6b43bc3f90316046a287d9ad3888309f7e1"
1603+
integrity sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==
1604+
dependencies:
1605+
"@types/unist" "*"
1606+
15881607
"@types/http-proxy@^1.17.14":
15891608
version "1.17.14"
15901609
resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec"
@@ -1629,6 +1648,11 @@
16291648
resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776"
16301649
integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==
16311650

1651+
"@types/unist@*":
1652+
version "3.0.2"
1653+
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20"
1654+
integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==
1655+
16321656
"@typescript-eslint/eslint-plugin@^6.5.0":
16331657
version "6.13.1"
16341658
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.1.tgz#f98bd887bf95551203c917e734d113bf8d527a0c"
@@ -2803,6 +2827,11 @@ depd@2.0.0:
28032827
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
28042828
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
28052829

2830+
dequal@^2.0.0:
2831+
version "2.0.3"
2832+
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
2833+
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
2834+
28062835
destr@^2.0.0, destr@^2.0.1, destr@^2.0.2:
28072836
version "2.0.2"
28082837
resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.2.tgz#8d3c0ee4ec0a76df54bc8b819bca215592a8c218"
@@ -2828,6 +2857,13 @@ devalue@^4.3.2:
28282857
resolved "https://registry.yarnpkg.com/devalue/-/devalue-4.3.2.tgz#cc44e4cf3872ac5a78229fbce3b77e57032727b5"
28292858
integrity sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==
28302859

2860+
devlop@^1.0.0:
2861+
version "1.1.0"
2862+
resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018"
2863+
integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==
2864+
dependencies:
2865+
dequal "^2.0.0"
2866+
28312867
diff-sequences@^29.4.3:
28322868
version "29.6.3"
28332869
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
@@ -3608,6 +3644,11 @@ hasown@^2.0.0:
36083644
dependencies:
36093645
function-bind "^1.1.2"
36103646

3647+
highlight.js@~11.9.0:
3648+
version "11.9.0"
3649+
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.9.0.tgz#04ab9ee43b52a41a047432c8103e2158a1b8b5b0"
3650+
integrity sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==
3651+
36113652
hookable@^5.5.3:
36123653
version "5.5.3"
36133654
resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d"
@@ -4080,6 +4121,11 @@ linkify-it@^4.0.1:
40804121
dependencies:
40814122
uc.micro "^1.0.1"
40824123

4124+
linkifyjs@^4.1.0:
4125+
version "4.1.3"
4126+
resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.1.3.tgz#0edbc346428a7390a23ea2e5939f76112c9ae07f"
4127+
integrity sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==
4128+
40834129
listhen@^1.5.5:
40844130
version "1.5.5"
40854131
resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.5.5.tgz#58915512af70f770aa3e9fb19367adf479bb58c4"
@@ -4170,6 +4216,15 @@ loupe@^2.3.6:
41704216
dependencies:
41714217
get-func-name "^2.0.1"
41724218

4219+
lowlight@^3.1.0:
4220+
version "3.1.0"
4221+
resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-3.1.0.tgz#aa394c5f3a7689fce35fa49a7c850ba3ead4f590"
4222+
integrity sha512-CEbNVoSikAxwDMDPjXlqlFYiZLkDJHwyGu/MfOsJnF3d7f3tds5J3z8s/l9TMXhzfsJCCJEAsD78842mwmg0PQ==
4223+
dependencies:
4224+
"@types/hast" "^3.0.0"
4225+
devlop "^1.0.0"
4226+
highlight.js "~11.9.0"
4227+
41734228
lru-cache@^10.0.1, lru-cache@^10.0.2, "lru-cache@^9.1.1 || ^10.0.0":
41744229
version "10.1.0"
41754230
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484"

0 commit comments

Comments
 (0)