diff --git a/.npmignore b/.npmignore index baaa993b9..e0847049f 100644 --- a/.npmignore +++ b/.npmignore @@ -1,7 +1,6 @@ * -!src/less/*.less -!src/less/lib/*.less -!src/less/resource/*.less +!public/less/*.less +!src/less/**/*.less !dist/lib/*.d.ts !dist/lib/**/*.d.ts !dist/font.css diff --git a/lib/prepublish/prepublish.js b/lib/prepublish/prepublish.js index 138ba1447..5a8f9034e 100644 --- a/lib/prepublish/prepublish.js +++ b/lib/prepublish/prepublish.js @@ -1,5 +1,7 @@ -const { resolve } = require("path"); +const { resolve, join } = require("path"); const { writeFileSync } = require("fs"); +const { spawnSync } = require('child_process'); +const { bundleWithoutNormalize } = require('../../webpack/attachments'); function pad2(n) {// always returns a string return (n < 10 ? "0" : "") + n; @@ -27,3 +29,34 @@ packageJSON.publishConfig.registry = 'https://npm.fineres.com/'; packageJSON.name = "@fui/core"; writeFileSync(resolve(__dirname, "../../package.json"), JSON.stringify(packageJSON, null, 2)); + +// 将less打包成fineui.less发布到npm以供用户定制主题 +const lessPath = join(process.cwd(), '/src/less'); + +function copyFiles(from, to) { + spawnSync('cp', ['-r', from, to]); +} + +function removeFiles(src) { + spawnSync('rm', ['-rf', src]); +} + +function finalizeCompile() { + let lessContent = ''; + + bundleWithoutNormalize.forEach(path => { + lessContent += `@import "../.${path}";\n`; + }); + + writeFileSync( + join(lessPath, 'fineui.less'), + lessContent, + ); +} + +removeFiles(`${lessPath}/font`); +removeFiles(`${lessPath}/fineui.less`); + +finalizeCompile(); + +copyFiles(`${process.cwd()}/dist/font`, lessPath);