diff --git a/package.json b/package.json index ead383e61..0c5da482b 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "compile": "node antd-tools/cli/run.js compile", "pub": "node antd-tools/cli/run.js pub", "prepublish": "node antd-tools/cli/run.js guard", + "pre-publish": "npm run test && node ./scripts/prepub", "dist": "node antd-tools/cli/run.js dist", "lint": "eslint -c ./.eslintrc --fix --ext .jsx,.js,.vue ./components", "lint:style": "stylelint \"./examples/**/*.less\" --fix --syntax less", diff --git a/scripts/prepub.js b/scripts/prepub.js new file mode 100644 index 000000000..b4ea46029 --- /dev/null +++ b/scripts/prepub.js @@ -0,0 +1,43 @@ +#!/usr/bin/env node + +/* eslint-disable */ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const packageInfo = require('../package.json'); + +if (fs.existsSync(path.join(__dirname, '../lib'))) { + // Build package.json version to lib/version/index.js + // prevent json-loader needing in user-side + const versionFilePath = path.join(process.cwd(), 'lib', 'version', 'index.js'); + const versionFileContent = fs.readFileSync(versionFilePath).toString(); + fs.writeFileSync( + versionFilePath, + versionFileContent.replace(`require('../../package.json')`, `{ version: '${packageInfo.version}' }`) + ); + console.log('Wrote version into lib/version/index.js'); +} + +if (fs.existsSync(path.join(__dirname, '../dist'))) { + // Build a entry less file to dist/antd.less + const componentsPath = path.join(process.cwd(), 'components'); + let componentsLessContent = ''; + + // Build components in one file: lib/style/components.less + fs.readdir(componentsPath, function (err, files) { + files.forEach(function (file) { + if (fs.existsSync(path.join(componentsPath, file, 'style', 'index.less'))) { + componentsLessContent += `@import "../${path.join(file, 'style', 'index.less')}";\n` + } + }); + fs.writeFileSync(path.join(process.cwd(), 'lib', 'style', 'components.less'), componentsLessContent); + + // Build less entry file: dist/antd.less + fs.writeFileSync( + path.join(process.cwd(), 'dist', 'antd.less'), + '@import "../lib/style/index.less";\n@import "../lib/style/components.less";' + ); + }); + console.log('Built a entry less file to dist/antd.less'); +}