From 11411bd52814a30f3a96b98662b8ea4a51585e51 Mon Sep 17 00:00:00 2001 From: chenshenhai Date: Sun, 27 Feb 2022 15:35:23 +0800 Subject: [PATCH] refactor: refactor build script and @idraw/util export --- jest.config.js | 3 +- package.json | 4 +- packages/util/__tests__/index.test.ts | 28 +++++--- packages/util/__tests__/lib/context.test.ts | 4 +- packages/util/package.json | 2 +- packages/util/src/default.ts | 1 + packages/util/src/index.ts | 74 +++++++++++++-------- scripts/build-bundle.js | 8 ++- scripts/rollup.config.js | 12 ++-- 9 files changed, 84 insertions(+), 52 deletions(-) create mode 100644 packages/util/src/default.ts diff --git a/jest.config.js b/jest.config.js index 8f44881..d412928 100644 --- a/jest.config.js +++ b/jest.config.js @@ -25,7 +25,8 @@ module.exports = { "modulePaths": [ "" ], - "testRegex": "(/packages/([^\/]{1,})/__tests__/.*)\\.test.ts$", + // "testRegex": "(/packages/([^\/]{1,})/__tests__/.*)\\.test.ts$", + "testRegex": "(/packages/util/__tests__/.*)\\.test.ts$", "setupFiles": [ "jest-canvas-mock" ] diff --git a/package.json b/package.json index 5162ab4..4ea7139 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "scripts": { "start": "node ./scripts/dev-vite.js", "dev": "node ./scripts/dev-rollup.js", - "build": "npm run build:src && npm run build:min", - "build:src": "NODE_ENV=production BUILD_MODE=reset node ./scripts/build-bundle.js", + "build": "npm run build:bundle && npm run build:min", + "build:bundle": "NODE_ENV=production BUILD_MODE=reset node ./scripts/build-bundle.js", "build:mod": "node ./scripts/build-module.js", "build:min": "node ./scripts/minify.js", "snapshot": "node ./scripts/build.js && node ./scripts/snapshot.js", diff --git a/packages/util/__tests__/index.test.ts b/packages/util/__tests__/index.test.ts index f3b31d7..fdbdfd6 100644 --- a/packages/util/__tests__/index.test.ts +++ b/packages/util/__tests__/index.test.ts @@ -1,16 +1,22 @@ -import util from '../src'; +import util from '../src/default'; const types = { - time: 'Object', - loader: 'Object', - file: 'Object', - color: 'Object', - uuid: 'Object', - istype: 'Object', - data: 'Object', - is: 'Object', - check: 'Object', - Context: 'Function', + 'Context': 'Function', + 'check': 'Object', + 'compose': 'Function', + 'createUUID': 'Function', + 'deepClone': 'Function', + 'delay': 'Function', + 'downloadImageFromCanvas': 'Function', + 'is': 'Object', + 'isColorStr': 'Function', + 'istype': 'Object', + 'loadHTML': 'AsyncFunction', + 'loadImage': 'Function', + 'loadSVG': 'AsyncFunction', + 'throttle': 'Function', + 'toColorHexNum': 'Function', + 'toColorHexStr': 'Function' } function getType (data: any): string { diff --git a/packages/util/__tests__/lib/context.test.ts b/packages/util/__tests__/lib/context.test.ts index d075998..2df3230 100644 --- a/packages/util/__tests__/lib/context.test.ts +++ b/packages/util/__tests__/lib/context.test.ts @@ -1,9 +1,7 @@ import Context from './../../src/lib/context'; -import util from './../../src' +import { deepClone } from './../../src/index' import { getData } from './data'; -const { deepClone } = util.data; - describe('@idraw/board: src/lib/context', () => { const options = { width: 600, diff --git a/packages/util/package.json b/packages/util/package.json index 7cb8ac7..4928866 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -3,7 +3,7 @@ "version": "0.2.0-alpha.26", "description": "", "main": "dist/index.cjs.js", - "module": "dist/index.es.js", + "module": "dist/index.esm.js", "unpkg": "dist/index.global.js", "types": "dist/index.d.ts", "scripts": { diff --git a/packages/util/src/default.ts b/packages/util/src/default.ts new file mode 100644 index 0000000..990ec1f --- /dev/null +++ b/packages/util/src/default.ts @@ -0,0 +1 @@ +export * as default from './index'; \ No newline at end of file diff --git a/packages/util/src/index.ts b/packages/util/src/index.ts index be821d2..473b598 100644 --- a/packages/util/src/index.ts +++ b/packages/util/src/index.ts @@ -9,33 +9,53 @@ import Context from './lib/context'; import is from './lib/is'; import check from './lib/check'; -export default { + +export { is, check, - time: { - delay, - compose, - throttle, - }, - loader: { - loadImage, - loadSVG, - loadHTML, - }, - file: { - downloadImageFromCanvas, - }, - color: { - toColorHexStr, - toColorHexNum, - isColorStr, - }, - uuid: { - createUUID - }, + delay, + compose, + throttle, + loadImage, + loadSVG, + loadHTML, + downloadImageFromCanvas, + toColorHexStr, + toColorHexNum, + isColorStr, + createUUID, istype, - data: { - deepClone, - }, - Context: Context, -}; \ No newline at end of file + deepClone, + Context, +} + +// export default { +// is, +// check, +// time: { +// delay, +// compose, +// throttle, +// }, +// loader: { +// loadImage, +// loadSVG, +// loadHTML, +// }, +// file: { +// downloadImageFromCanvas, +// }, +// color: { +// toColorHexStr, +// toColorHexNum, +// isColorStr, +// }, +// uuid: { +// createUUID +// }, +// istype, +// data: { +// deepClone, +// }, +// Context: Context, +// }; \ No newline at end of file diff --git a/scripts/build-bundle.js b/scripts/build-bundle.js index 2567320..2d028bc 100644 --- a/scripts/build-bundle.js +++ b/scripts/build-bundle.js @@ -20,7 +20,13 @@ async function main() { } await - execa('rollup', [ '-c', './scripts/rollup.config.js', ], { stdio: 'inherit' }); + execa( + 'rollup', + [ + '-c', + './scripts/rollup.config.js', + `--target-pkg=${process.argv[2] || ''}`, + ], { stdio: 'inherit' }); } diff --git a/scripts/rollup.config.js b/scripts/rollup.config.js index bc05faf..8c62796 100644 --- a/scripts/rollup.config.js +++ b/scripts/rollup.config.js @@ -13,7 +13,7 @@ const stylePlugin = require('./util/style-plugin'); const resolveFile = function(names = []) { return path.join(__dirname, '..', 'packages', ...names) } -const targetMod = process.argv[5]; +const targetMod = process.argv[5] || process.argv[4]; const packages = getTargetPackage(targetMod); const modules = []; @@ -31,7 +31,7 @@ for(let i = 0; i < packages.length; i++) { // }); } else { modules.push({ - input: resolveFile([pkg.dirName, 'src', 'index.ts']), + input: resolveFile([pkg.dirName, 'src', 'default.ts']), output: resolveFile([pkg.dirName, 'dist', 'index.global.js']), name: pkg.globalName, format: 'iife', @@ -45,7 +45,7 @@ for(let i = 0; i < packages.length; i++) { // plugins: [], // }); modules.push({ - input: resolveFile([pkg.dirName, 'src', 'index.ts']), + input: resolveFile([pkg.dirName, 'src', 'default.ts']), output: resolveFile([pkg.dirName, 'dist', 'index.cjs.js']), name: pkg.globalName, format: 'cjs', @@ -55,8 +55,8 @@ for(let i = 0; i < packages.length; i++) { external, }); modules.push({ - input: resolveFile([pkg.dirName, 'src', 'index.ts']), - output: resolveFile([pkg.dirName, 'dist', 'index.es.js']), + input: resolveFile([pkg.dirName, 'src', 'default.ts']), + output: resolveFile([pkg.dirName, 'dist', 'index.esm.js']), name: pkg.globalName, esModule: true, format: 'es', @@ -115,7 +115,7 @@ function createConfigItem(params, opts = {}) { function createDevConfig(mods) { const configs = mods.map((mod) => { const cfg = createConfigItem(mod, { - minify: mod.output.endsWith('.mini.js'), + minify: mod.output.endsWith('.min.js'), }); return cfg; });