|
@@ -1,9 +1,8 @@
|
|
|
const config = require('../src/config.json');
|
|
const config = require('../src/config.json');
|
|
|
-const pck = require('./../package.json');
|
|
|
|
|
const path = require('path');
|
|
const path = require('path');
|
|
|
const fs = require('fs');
|
|
const fs = require('fs');
|
|
|
|
|
|
|
|
-const sourceDir = path.resolve(__dirname, './../tsc/type/src/packages') // 拷贝的源文件夹
|
|
|
|
|
|
|
+const sourceDir = path.resolve(__dirname, './../tsc/type/src/packages'); // 拷贝的源文件夹
|
|
|
|
|
|
|
|
const toDir = path.resolve(__dirname, './../dist/types'); // ./../dist
|
|
const toDir = path.resolve(__dirname, './../dist/types'); // ./../dist
|
|
|
|
|
|
|
@@ -11,6 +10,16 @@ const basePath = path.join(toDir, '__VUE');
|
|
|
|
|
|
|
|
const fileList = [];
|
|
const fileList = [];
|
|
|
|
|
|
|
|
|
|
+let packages = [];
|
|
|
|
|
+
|
|
|
|
|
+const preContent = `
|
|
|
|
|
+declare type Install<T> = T & {
|
|
|
|
|
+ install(app: import('vue').App): void;
|
|
|
|
|
+};\n`;
|
|
|
|
|
+const start = 'declare const _default:';
|
|
|
|
|
+const end = ';\nexport default _default;\n';
|
|
|
|
|
+const regex = new RegExp(`${start}([\\s\\S]*?)${end}`);
|
|
|
|
|
+
|
|
|
const getCompList = (basePath) => {
|
|
const getCompList = (basePath) => {
|
|
|
const files = fs.readdirSync(basePath);
|
|
const files = fs.readdirSync(basePath);
|
|
|
files.forEach((filename) => {
|
|
files.forEach((filename) => {
|
|
@@ -19,15 +28,36 @@ const getCompList = (basePath) => {
|
|
|
const stats = fs.statSync(filedir);
|
|
const stats = fs.statSync(filedir);
|
|
|
const isFile = stats.isFile();//是文件
|
|
const isFile = stats.isFile();//是文件
|
|
|
const isDir = stats.isDirectory();//是文件夹
|
|
const isDir = stats.isDirectory();//是文件夹
|
|
|
- if(isFile){
|
|
|
|
|
|
|
+ if(isFile){
|
|
|
fileList.push(filedir);
|
|
fileList.push(filedir);
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
if(isDir){
|
|
if(isDir){
|
|
|
getCompList(filedir);//递归,如果是文件夹,就继续遍历该文件夹下面的文件
|
|
getCompList(filedir);//递归,如果是文件夹,就继续遍历该文件夹下面的文件
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const getCompName = (name) => {
|
|
|
|
|
+ if(!packages.length) {
|
|
|
|
|
+ config.nav.forEach((item, index) => {
|
|
|
|
|
+ packages = packages.concat(item.packages);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ const packageName = packages.find((item) => item.name.toLowerCase() === name.toLowerCase());
|
|
|
|
|
+ return packageName ? packageName.name : ''
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const getLocale = () => {
|
|
|
|
|
+ const source = path.join(sourceDir, 'locale');
|
|
|
|
|
+ const to = path.resolve(__dirname, './../dist/packages/locale');
|
|
|
|
|
+ fs.cp(source, to, { recursive: true }, (err) => {
|
|
|
|
|
+ if(err) {
|
|
|
|
|
+ console.error(err);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
fs.cp(sourceDir, toDir, { recursive: true }, (err) => {
|
|
fs.cp(sourceDir, toDir, { recursive: true }, (err) => {
|
|
|
if(err) {
|
|
if(err) {
|
|
|
console.error(err);
|
|
console.error(err);
|
|
@@ -35,7 +65,7 @@ fs.cp(sourceDir, toDir, { recursive: true }, (err) => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const oldName = path.join(toDir, 'nutui.vue.build.d.ts');
|
|
const oldName = path.join(toDir, 'nutui.vue.build.d.ts');
|
|
|
- const newName = path.join(toDir, 'nutui.d.ts');
|
|
|
|
|
|
|
+ const newName = path.join(toDir, 'index.d.ts');
|
|
|
|
|
|
|
|
fs.rename(oldName, newName, (err) => {
|
|
fs.rename(oldName, newName, (err) => {
|
|
|
if(err) {
|
|
if(err) {
|
|
@@ -45,8 +75,24 @@ fs.cp(sourceDir, toDir, { recursive: true }, (err) => {
|
|
|
|
|
|
|
|
getCompList(basePath);
|
|
getCompList(basePath);
|
|
|
|
|
|
|
|
- // fileList.forEach((item) => {
|
|
|
|
|
- // // 获取文件中的内容
|
|
|
|
|
|
|
+ fileList.forEach((item, index) => {
|
|
|
|
|
+ const content = fs.readFileSync(item).toLocaleString();
|
|
|
|
|
+ const inputs = content.match(regex);
|
|
|
|
|
+
|
|
|
|
|
+ if(inputs && inputs.length) {
|
|
|
|
|
+ let name = item.substring(0, item.lastIndexOf('/'))
|
|
|
|
|
+ name = name.substring(name.lastIndexOf('/') + 1)
|
|
|
|
|
+ let remain = `
|
|
|
|
|
+declare module 'vue' {
|
|
|
|
|
+ interface GlobalComponents {
|
|
|
|
|
+ Nut${getCompName(name)}: typeof _default;
|
|
|
|
|
+ }
|
|
|
|
|
+}`;
|
|
|
|
|
+ let changeContent = content.replace(regex, `${preContent}${start} Install<${inputs[1]}>${end}${remain}`)
|
|
|
|
|
+ fs.writeFileSync(item, changeContent);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
|
|
|
- // });
|
|
|
|
|
|
|
+ //国际化处理
|
|
|
|
|
+ getLocale();
|
|
|
});
|
|
});
|