浏览代码

feat: types file & beta.5

richard1015 4 年之前
父节点
当前提交
70361ac4fe
共有 6 个文件被更改,包括 74 次插入26 次删除
  1. 1 0
      .gitignore
  2. 13 16
      jd/generate-nutui.js
  3. 49 0
      jd/generate-types.js
  4. 5 4
      package.json
  5. 1 1
      tsconfig.json
  6. 5 5
      vite.config.build.disperse.ts

+ 1 - 0
.gitignore

@@ -7,6 +7,7 @@ yarn.lock
 package-lock.json
 /cache
 /src/nutui.ts
+/tsc/test
 
 
 # local env files

+ 13 - 16
jd/generate-nutui.js

@@ -2,7 +2,7 @@ const package = require('../package.json');
 const config = require('../src/config.json');
 const path = require('path');
 const fs = require('fs');
-let importStr = '';
+let importStr = `import { App } from 'vue';\n`;
 const packages = [];
 config.nav.map(item => {
   item.packages.forEach(element => {
@@ -13,21 +13,18 @@ config.nav.map(item => {
     }
   });
 });
-let installFunction = `
-  function install(app: any) {
-    const packages = [${packages.join(',')}];
-    packages.forEach((item:any) => {
-      if (item.install) {
-        app.use(item);
-      } else if (item.name) {
-        app.component(item.name, item);
-      }
-    });
-  }
-  `;
-let fileStr = `
-  ${importStr}
-  ${installFunction}
+let installFunction = `function install(app: App) {
+  const packages = [${packages.join(',')}];
+  packages.forEach((item:any) => {
+    if (item.install) {
+      app.use(item);
+    } else if (item.name) {
+      app.component(item.name, item);
+    }
+  });
+}`;
+let fileStr = `${importStr}
+${installFunction}
 export { ${packages.join(',')}  };
 export default { install, version:'${package.version}'};`;
 fs.writeFile(

+ 49 - 0
jd/generate-types.js

@@ -0,0 +1,49 @@
+const config = require('../src/config.json');
+const path = require('path');
+const fs = require('fs');
+let importStr = `import { App } from 'vue';
+declare class UIComponent {
+  static install(vue: App): void;
+}\n`;
+const packages = [];
+config.nav.map(item => {
+  item.packages.forEach(element => {
+    let { name, show } = element;
+    if (show) {
+      importStr += `declare class ${name} extends UIComponent {}\n`;
+      packages.push(name);
+    }
+  });
+});
+let installFunction = `
+export interface InstallationOptions {
+  locale?: any;
+  lang?: any;
+}
+declare function install(app: App, options?: InstallationOptions): void;
+export { ${packages.join(',')} };
+declare const _default: {
+  install: typeof install;
+  version: string;
+};
+export default _default;`;
+let fileStr = importStr + installFunction;
+fs.writeFile(
+  path.resolve(__dirname, '../dist/nutui.d.ts'),
+  fileStr,
+  'utf8',
+  error => {
+    console.log(error);
+    // logger.success(`${package_config_path} 文件写入成功`);
+  }
+);
+fs.writeFile(
+  path.resolve(__dirname, '../dist/index.d.ts'),
+  `import * as NutUI from './nutui';
+export default NutUI;
+export * from './nutui';`,
+  'utf8',
+  error => {
+    // logger.success(`${package_config_path} 文件写入成功`);
+  }
+);

+ 5 - 4
package.json

@@ -1,6 +1,6 @@
 {
   "name": "@nutui/nutui",
-  "version": "3.0.0-beta.3",
+  "version": "3.0.0-beta.5",
   "npm": {
     "tag": "beta"
   },
@@ -8,7 +8,7 @@
   "main": "dist/nutui.umd.js",
   "module": "dist/nutui.es.js",
   "style": "dist/style.css",
-  "typings": "dist/types/nutui.d.ts",
+  "typings": "dist/index.d.ts",
   "keywords": [
     "nutui",
     "nutui2",
@@ -39,13 +39,14 @@
     "checked":"npm run generate:file && rm -rf dist/ && tsc",
     "dev": "npm run checked && vite --open",
     "build:site": "npm run checked && vite build",
-    "build": "npm run checked && vite build --config vite.config.build.ts",
+    "build": "npm run checked && vite build --config vite.config.build.ts && npm run generate:types",
     "build:disperse": "vite build --config vite.config.build.disperse.ts",
     "serve": "vite preview",
     "upload": "yarn build:site && node ./jd/upload.js",
     "add": "node jd/createComponentMode.js",
     "publish:beta": "npm publish --tag=beta",
-    "generate:file": "node jd/generate-nutui.js"
+    "generate:file": "node jd/generate-nutui.js",
+    "generate:types": "node jd/generate-types.js"
   },
   "dependencies": {
     "axios": "^0.21.0",

+ 1 - 1
tsconfig.json

@@ -13,7 +13,7 @@
     "resolveJsonModule": true,
     "esModuleInterop": true,
     "lib": ["esnext", "dom"],
-    "outDir": "./dist/es",
+    "outDir": "./tsc/test",
     "types": ["vite/client"],
     "paths": {
       "@/*": ["src/*"]

+ 5 - 5
vite.config.build.disperse.ts

@@ -26,18 +26,18 @@ export default defineConfig({
   build: {
     minify: false,
     lib: {
-      entry: path.resolve(__dirname, './src/packages/button/index.vue'),
-      name: 'button'
+      entry: './src/packages/button/index.vue',
+      name: 'index'
       // formats: ['umd']
     },
     rollupOptions: {
       // 请确保外部化那些你的库中不需要的依赖
       external: ['vue'],
-      input: path.resolve(__dirname, './src/packages/button/index.vue'),
+      input: ['./src/packages/button/index.vue'],
       output: [
         {
           dir: null,
-          file: path.resolve(__dirname, './dist/lib/button/index.js'),
+          file: './dist/lib/button/index.js',
           banner,
           format: 'umd',
           // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
@@ -53,6 +53,6 @@ export default defineConfig({
         }
       ]
     },
-    emptyOutDir: false
+    emptyOutDir: true
   }
 });