diff --git a/.antd-tools.config.js b/.antd-tools.config.js new file mode 100644 index 0000000000..6e13477744 --- /dev/null +++ b/.antd-tools.config.js @@ -0,0 +1,70 @@ +const fs = require('fs'); +const path = require('path'); +const packageInfo = require('./package.json'); + +// We need compile additional content for antd user +function finalizeCompile() { + 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}' }`, + ), + ); + // eslint-disable-next-line + console.log('Wrote version into lib/version/index.js'); + + // Build package.json version to lib/version/index.d.ts + // prevent https://github.com/ant-design/ant-design/issues/4935 + const versionDefPath = path.join(process.cwd(), 'lib', 'version', 'index.d.ts'); + fs.writeFileSync( + versionDefPath, + `declare var _default: "${packageInfo.version}";\nexport default _default;\n`, + ); + // eslint-disable-next-line + console.log('Wrote version into lib/version/index.d.ts'); + + // 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, (err, files) => { + files.forEach((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, + ); + }); + } +} + +function finalizeDist() { + if (fs.existsSync(path.join(__dirname, './dist'))) { + // 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";', + ); + + // eslint-disable-next-line + console.log('Built a entry less file to dist/antd.less'); + } +} + +module.exports = { + compile: { + finalize: finalizeCompile, + }, + dist: { + finalize: finalizeDist, + }, +}; diff --git a/package.json b/package.json index c4947cc0bd..4d1886775d 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "@yesmeck/offline-plugin": "^5.0.5", "ansi-styles": "^3.2.1", "antd-theme-generator": "^1.1.4", - "antd-tools": "^7.1.2", + "antd-tools": "^7.3.0", "babel-eslint": "^10.0.1", "babel-plugin-add-react-displayname": "^0.0.5", "bisheng": "^1.1.0", @@ -217,7 +217,7 @@ "deploy:china-mirror": "git checkout gh-pages && git pull origin gh-pages && git push git@gitee.com:ant-design/ant-design.git gh-pages", "pub": "antd-tools run pub", "prepublish": "antd-tools run guard", - "pre-publish": "npm run test-all && node ./scripts/prepub", + "pre-publish": "npm run test-all", "authors": "git log --format='%aN <%aE>' | sort -u | grep -v 'users.noreply.github.com' | grep -v 'gitter.im' | grep -v '.local>' | grep -v 'alibaba-inc.com' | grep -v 'alipay.com' | grep -v 'taobao.com' > AUTHORS.txt", "lint-staged": "lint-staged", "lint-staged:ts": "tsc && node node_modules/tslint/bin/tslint", diff --git a/scripts/prepub.js b/scripts/prepub.js deleted file mode 100644 index 94a45d2c3a..0000000000 --- a/scripts/prepub.js +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env node - -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}' }`, - ), - ); - // eslint-disable-next-line - console.log('Wrote version into lib/version/index.js'); - - // Build package.json version to lib/version/index.d.ts - // prevent https://github.com/ant-design/ant-design/issues/4935 - const versionDefPath = path.join(process.cwd(), 'lib', 'version', 'index.d.ts'); - fs.writeFileSync( - versionDefPath, - `declare var _default: "${packageInfo.version}";\nexport default _default;\n`, - ); - // eslint-disable-next-line - console.log('Wrote version into lib/version/index.d.ts'); -} - -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, (err, files) => { - files.forEach(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";', - ); - }); - // eslint-disable-next-line - console.log('Built a entry less file to dist/antd.less'); -} diff --git a/tests/dekko/dist.test.js b/tests/dekko/dist.test.js index 326a3820ad..d4518721b3 100644 --- a/tests/dekko/dist.test.js +++ b/tests/dekko/dist.test.js @@ -3,10 +3,13 @@ const chalk = require('chalk'); $('dist') .isDirectory() + .hasFile('antd-with-locales.js') + .hasFile('antd-with-locales.min.js') .hasFile('antd.css') .hasFile('antd.min.css') .hasFile('antd.js') - .hasFile('antd.min.js'); + .hasFile('antd.min.js') + .hasFile('antd.less'); // eslint-disable-next-line console.log(chalk.green('✨ `dist` directory is valid.'));