Skip to content

Commit

Permalink
feat: auto import components and variables
Browse files Browse the repository at this point in the history
  • Loading branch information
uyarn committed Mar 3, 2024
1 parent 5d7fca1 commit 00f5d63
Show file tree
Hide file tree
Showing 13 changed files with 217 additions and 22 deletions.
10 changes: 10 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"useTabs": false,
"tabWidth": 2,
"trailingComma": "none",
"semi": true,
"singleQuote": true,
"vueIndentScriptAndStyle": false,
"printWidth": 250,
"bracketSameLine": false
}
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"cSpell.words": ["nuxt", "tdesign"]
}
14 changes: 9 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "my-module",
"name": "@tdesign-vue-next/nuxt",
"version": "1.0.0",
"description": "My new Nuxt module",
"repository": "your-org/my-module",
"description": "Nuxt Module for TDesign",
"repository": "tdesignOteam/tdesign-nuxt",
"license": "MIT",
"type": "module",
"exports": {
Expand All @@ -28,18 +28,22 @@
"test:watch": "vitest watch"
},
"dependencies": {
"@nuxt/kit": "^3.10.3"
"@nuxt/kit": "^3.10.3",
"lodash-es": "^4.17.21"
},
"devDependencies": {
"@types/node": "^20.11.22",
"@nuxt/devtools": "latest",
"@nuxt/eslint-config": "^0.2.0",
"@nuxt/module-builder": "^0.5.5",
"@nuxt/schema": "^3.10.3",
"@nuxt/test-utils": "^3.11.0",
"@types/node": "^20.11.22",
"changelogen": "^0.5.5",
"eslint": "^8.57.0",
"nuxt": "^3.10.3",
"pathe": "^1.1.2",
"prettier": "^3.2.5",
"tdesign-vue-next": "^1.8.1",
"vitest": "^1.3.1"
}
}
2 changes: 2 additions & 0 deletions playground/app.vue
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
<template>
<div>
Nuxt module playground!
<t-button>1</t-button>
</div>
</template>

<script setup>
</script>

6 changes: 4 additions & 2 deletions playground/nuxt.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
export default defineNuxtConfig({
modules: ['../src/module'],
myModule: {},
build: {
transpile: ['tdesign-vue-next']
},
devtools: { enabled: true }
})
});
2 changes: 1 addition & 1 deletion playground/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"private": true,
"name": "my-module-playground",
"name": "@tdesign-vue-next/nuxt-playground",
"type": "module",
"scripts": {
"dev": "nuxi dev",
Expand Down
109 changes: 109 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions src/components.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

export const componentMap = {
// Basic components
button: ['Button', 'ButtonGroup'],
link: ['Link'],
// Layout Components
divider: ['divider'],
grid: ['Row', 'Col'],
layout: ['Layout', 'Header', 'Aside', 'Content', 'Footer'],
};
22 changes: 22 additions & 0 deletions src/interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Module options TypeScript interface definition
export interface ModuleOptions {
/**
* resolve `tdesign-icons'
* @default true
*/
resolveIcons?: boolean;
/**
* whether to import ESM version
* @default false
*/
esm?: boolean;
/**
* exclude component name, if match do not resolve the name
*
*/
exclude?: string | RegExp | (string | RegExp)[];
/**
* self-defined the component prefix
*/
prefix?: string
}
20 changes: 11 additions & 9 deletions src/module.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
import { defineNuxtModule, addPlugin, createResolver } from '@nuxt/kit'
import { defineNuxtModule, addPlugin, createResolver, tryResolveModule } from '@nuxt/kit';

// Module options TypeScript interface definition
export interface ModuleOptions {}
import type { ModuleOptions } from './interface';
import { resolveTDesignComponents, resolveTDesignVariables } from './resolvers';

export default defineNuxtModule<ModuleOptions>({
meta: {
name: 'TDesign Vue Next Nuxt module',
configKey: 'myModule'
configKey: 'tdesign'
},
// Default configuration options of the Nuxt module
defaults: {},
setup (options, nuxt) {
const resolver = createResolver(import.meta.url)
setup(options: ModuleOptions, nuxt) {
const resolver = createResolver(import.meta.url);

// Do not add the extension since the `.ts` will be transpiled to `.mjs` after `npm run prepack`
addPlugin(resolver.resolve('./runtime/plugin'))
console.log('🚀 tdesign-vue-next nuxt module is loading');

resolveTDesignVariables(options, nuxt);
resolveTDesignComponents(options);
}
})
});
Loading

0 comments on commit 00f5d63

Please sign in to comment.