Browse Source

feat: themes

richard1015 4 years ago
parent
commit
0f7df9a610
5 changed files with 47 additions and 8 deletions
  1. 1 1
      README.md
  2. 2 2
      jd/generate-nutui.js
  3. 37 0
      jd/generate-themes.js
  4. 3 3
      jd/generate-types.js
  5. 4 2
      package.json

+ 1 - 1
README.md

@@ -3,7 +3,7 @@
  
 一套京东风格的轻量级移动端 Vue3组件库
     
-![NutUI](https://img11.360buyimg.com/uba/jfs/t1/11117/21/3608/18942/5c20ab52E35e5a500/02e3c1f89cd3dad1.png)
+![NutUI](https://img14.360buyimg.com/imagetools/jfs/t1/167902/2/8762/791358/603742d7E9b4275e3/e09d8f9a8bf4c0ef.png)
 
 ## ⌨️ 本地开发
 

+ 2 - 2
jd/generate-nutui.js

@@ -1,7 +1,7 @@
 const package = require('../package.json');
 const config = require('../src/config.json');
 const path = require('path');
-const fs = require('fs');
+const fs = require('fs-extra');
 let importStr = `import { App } from 'vue';\n`;
 const packages = [];
 config.nav.map(item => {
@@ -29,7 +29,7 @@ let fileStr = `${importStr}
 ${installFunction}
 export { ${packages.join(',')}  };
 export default { install, version:'${package.version}'};`;
-fs.writeFile(
+fs.outputFile(
   path.resolve(__dirname, '../src/nutui.ts'),
   fileStr,
   'utf8',

+ 37 - 0
jd/generate-themes.js

@@ -0,0 +1,37 @@
+const config = require('../src/config.json');
+const path = require('path');
+const fs = require('fs-extra');
+let fileStr = `@import './styles/variables.scss';\n`;
+
+config.nav.map(item => {
+  item.packages.forEach(element => {
+    let folderName = element.name.toLowerCase();
+    fileStr += `@import './packages/${folderName}/index.scss';\n`;
+    fs.copy(
+      path.resolve(__dirname, `../src/packages/${folderName}/index.scss`),
+      path.resolve(__dirname, `../dist/packages/${folderName}/index.scss`)
+    );
+  });
+});
+const filterFunc = (src, dest) => {
+  // your logic here
+  // it will be copied if return true
+  return !src.includes('font');
+};
+fs.copy(
+  path.resolve(__dirname, '../src/styles'),
+  path.resolve(__dirname, '../dist/styles'),
+  { filter: filterFunc },
+  err => {
+    if (err) return console.error(err);
+    // console.log('success!')
+  }
+);
+fs.outputFile(
+  path.resolve(__dirname, '../dist/themes.scss'),
+  fileStr,
+  'utf8',
+  error => {
+    // logger.success(`文件写入成功`);
+  }
+);

+ 3 - 3
jd/generate-types.js

@@ -1,6 +1,6 @@
 const config = require('../src/config.json');
 const path = require('path');
-const fs = require('fs');
+const fs = require('fs-extra');
 let importStr = `import { App } from 'vue';
 declare class UIComponent {
   static install(vue: App): void;
@@ -28,7 +28,7 @@ declare const _default: {
 };
 export default _default;`;
 let fileStr = importStr + installFunction;
-fs.writeFile(
+fs.outputFile(
   path.resolve(__dirname, '../dist/nutui.d.ts'),
   fileStr,
   'utf8',
@@ -36,7 +36,7 @@ fs.writeFile(
     // logger.success(`${package_config_path} 文件写入成功`);
   }
 );
-fs.writeFile(
+fs.outputFile(
   path.resolve(__dirname, '../dist/index.d.ts'),
   `import * as NutUI from './nutui';
 export default NutUI;

+ 4 - 2
package.json

@@ -41,14 +41,15 @@
     "build:site": "npm run checked && vite build",
     "build:gh-pages": "npm run checked && vite build --base=/nutui/",
     "build:site:oss": "npm run checked && vite build --base=/nutui/3x/",
-    "build": "npm run checked && vite build --config vite.config.build.ts && npm run generate:types",
+    "build": "npm run checked && vite build --config vite.config.build.ts && npm run generate:types && npm run generate:themes",
     "build:disperse": "vite build --config vite.config.build.disperse.ts",
     "serve": "vite preview",
     "upload": "yarn build:site:oss && node ./jd/upload.js",
     "add": "node jd/createComponentMode.js",
     "publish:beta": "npm publish --tag=beta",
     "generate:file": "node jd/generate-nutui.js",
-    "generate:types": "node jd/generate-types.js"
+    "generate:types": "node jd/generate-types.js",
+    "generate:themes": "node jd/generate-themes.js"
   },
   "dependencies": {
     "axios": "^0.21.0",
@@ -69,6 +70,7 @@
     "eslint-plugin-prettier": "^3.1.3",
     "eslint-plugin-vue": "^7.0.0-0",
     "front-matter": "^4.0.2",
+    "fs-extra": "^9.1.0",
     "highlight.js": "^10.3.1",
     "husky": "^4.3.0",
     "lint-staged": "^10.5.0",