Skip to content

Commit

Permalink
chore: opt ci
Browse files Browse the repository at this point in the history
  • Loading branch information
liihuu committed Dec 10, 2023
1 parent dba0127 commit 4b87942
Show file tree
Hide file tree
Showing 15 changed files with 200 additions and 160 deletions.
5 changes: 1 addition & 4 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
config/
scripts/
dist/
types/
docs/
types/
scripts/
.eslintrc.cjs
index.js
6 changes: 2 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,8 @@
* limitations under the License.
*/

'use strict'

if (process.env.NODE_ENV === 'production') {
module.exports = require('./dist/klinecharts.min.js')
module.exports = require('./umd/klinecharts.min.js')
} else {
module.exports = require('./dist/klinecharts.js')
module.exports = require('./umd/klinecharts.js')
}
23 changes: 13 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
"name": "klinecharts",
"version": "9.6.0",
"description": "Lightweight k-line chart built with html5 canvas",
"main": "./dist/klinecharts.min.js",
"module": "index.js",
"types": "./types/index.d.ts",
"main": "./dist/main.js",
"module": "./dist/index.js",
"unpkg": "./dist/umd/klinecharts.min.js",
"types": "./dist/index.d.ts",
"type": "module",
"files": [
"LICENSE",
"README.md",
"index.js",
"types/",
"dist/",
"licenses/",
"NOTICE"
Expand All @@ -35,11 +35,14 @@
"private": false,
"scripts": {
"lint": "eslint src",
"clean": "node scripts/clean.cjs",
"build-core:dev": "cross-env NODE_ENV=development node scripts/build.cjs",
"build-core:prod": "cross-env NODE_ENV=production node scripts/build.cjs",
"build-core": "npm run build-core:dev && npm run build-core:prod",
"build-dts": "dts-bundle-generator --no-banner true --fail-on-class true --umd-module-name klinecharts -o types/index.d.ts src/index.ts",
"clean": "node scripts/clean.js",
"build-esm": "node scripts/build-esm.js",
"build-cjs": "cross-env NODE_ENV=production node scripts/build-cjs.js",
"build-umd:dev": "cross-env NODE_ENV=development node scripts/build-umd.js",
"build-umd:prod": "cross-env NODE_ENV=production node scripts/build-umd.js",
"build-umd": "npm run build-umd:dev && npm run build-umd:prod",
"build-core": "npm run build-esm && npm run build-cjs && npm run build-umd",
"build-dts": "dts-bundle-generator --no-banner true --fail-on-class true --umd-module-name klinecharts -o dist/index.d.ts src/index.ts",
"build": "npm run clean && npm run build-core && npm run build-dts",
"prepare": "husky install",
"docs:pre-work": "npm run pre-work --prefix docs",
Expand Down
10 changes: 10 additions & 0 deletions scripts/build-cjs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import build from './build.js'
import { resolvePath } from './utils.js'

const fileName = 'main.cjs'
const index = resolvePath('index.js')
build({
index,
fileName,
format: 'cjs'
})
11 changes: 11 additions & 0 deletions scripts/build-esm.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import build from './build.js'
import { resolvePath } from './utils.js'

const fileName = 'index.js'
const index = resolvePath('index.ts', resolvePath('src'))

build({
index,
fileName,
format: 'esm'
})
15 changes: 15 additions & 0 deletions scripts/build-umd.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import build from './build.js'
import { isDev, env } from './config.js'
import { resolvePath } from './utils.js'

const fileName = isDev ? 'klinecharts.js' : 'klinecharts.min.js'
const index = resolvePath('index.ts', resolvePath('src'))

build({
index,
replaceValues: { "process.env.NODE_ENV": JSON.stringify(env) },
fileName,
format: 'umd',
parentDir: 'umd',
name: 'klinecharts'
})
34 changes: 0 additions & 34 deletions scripts/build.cjs

This file was deleted.

28 changes: 28 additions & 0 deletions scripts/build.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { rollup } from 'rollup'
import chalk from 'chalk'

import { createInputConfig, createOutputConfig, version, env } from './config.js'

async function build({ index, replaceValues, fileName, format, parentDir, name }) {
const text = `version ${version}${env ? ` ${env} `: ' '}${format} file`

console.log(`Start building ${text}...\n`)

try {
const startTime = new Date().getTime()
const bundle = await rollup(createInputConfig({ input: index, replaceValues }))

await bundle.write(createOutputConfig({
fileName, format, name, parentDir
}));

console.log(chalk.green(`\n✔️ Compiled ${text} successfully.\n`));
console.log(`Done in ${((new Date().getTime() - startTime) / 1000 / 60).toFixed(2)}s.\n`)
} catch (err) {
console.log(`\n\n${chalk.red(err)}\n`);
console.log(chalk.red(`✖️ Failed to compile ${text}.\n`));
process.exit(1);
}
}

export default build
39 changes: 20 additions & 19 deletions scripts/clean.cjs → scripts/clean.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
'use strict';
const fs = require('fs');
const chalk = require('chalk');
import fs from 'fs'
import chalk from 'chalk'

const { resolvePath, buildDir } = require('./paths.cjs');
import { resolvePath } from './utils.js'

const buildDir = resolvePath('dist')

let totalFileCount = 0
let deletedFileCount = 0

function eachFiles (dir) {
if (fs.existsSync(dir)) {
const files = fs.readdirSync(dir);
const files = fs.readdirSync(dir)
files.forEach(file => {
const path = resolvePath(file, dir);
const path = resolvePath(file, dir)
if (fs.statSync(path).isDirectory()) {
eachFiles(path);
eachFiles(path)
} else {
totalFileCount++
}
Expand All @@ -23,29 +24,29 @@ function eachFiles (dir) {

function deleteFiles (dir) {
if (fs.existsSync(dir)) {
const files = fs.readdirSync(dir);
const files = fs.readdirSync(dir)
files.forEach(file => {
const path = resolvePath(file, dir);
const path = resolvePath(file, dir)
if (fs.statSync(path).isDirectory()) {
deleteDir(path);
deleteFiles(path)
} else {
fs.unlinkSync(path);
fs.unlinkSync(path)
deletedFileCount++
process.stdout.clearLine(process.stdout);
process.stdout.cursorTo(0);
const percent = `${Math.round(deletedFileCount / totalFileCount * 100)}%`;
process.stdout.write(`${chalk.blue(`${percent}(${deletedFileCount}/${totalFileCount}): ${file}`)}`, 'utf-8');
process.stdout.cursorTo(0)
const percent = `${Math.round(deletedFileCount / totalFileCount * 100)}%`
process.stdout.write(`${chalk.blue(`${percent}(${deletedFileCount}/${totalFileCount}): ${file}`)}`, 'utf-8')
}
})
fs.rmdirSync(dir);
fs.rmdirSync(dir)
}
}

function clean () {
eachFiles(buildDir);
deleteFiles(buildDir);
eachFiles(buildDir)
deleteFiles(buildDir)

console.log(chalk.green('\n\n✔️ Clean successfully.\n'));
console.log(chalk.green('\n\n✔️ Clean successfully.\n'))
}

clean();
clean()
69 changes: 0 additions & 69 deletions scripts/config.cjs

This file was deleted.

82 changes: 82 additions & 0 deletions scripts/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import { nodeResolve } from '@rollup/plugin-node-resolve'
import eslint from '@rollup/plugin-eslint'
import replace from '@rollup/plugin-replace'
// import commonjs from '@rollup/plugin-commonjs'
import typescript from '@rollup/plugin-typescript'
import terser from '@rollup/plugin-terser'
import fileSize from 'rollup-plugin-filesize'
import progress from 'rollup-plugin-progress'

import { resolvePath, getVersion } from './utils.js'

const version = getVersion()

const env = process.env.NODE_ENV

const isDev = env === 'development'

const isProd = env === 'production'

const buildDir = resolvePath('dist')

function createInputConfig ({ input, replaceValues }) {
return {
input,
plugins: [
typescript(),
eslint({
throwOnError: true
}),
nodeResolve(),
// commonjs(),
progress(),
replace({
preventAssignment: true,
values: {
'__VERSION__': version,
...replaceValues
}
}),
fileSize(),
isProd && terser()
].filter(p => !!p)
}
}

function createOutputConfig ({
fileName, format, name, parentDir
}) {
let file
if (parentDir) {
file = resolvePath(fileName, resolvePath(parentDir, buildDir))
} else {
file = resolvePath(fileName, buildDir)
}
const config = {
file,
format,
sourcemap: isDev,
indent: false,
banner: `
/**
* @license
* KLineChart v${version}
* Copyright (c) 2019 lihu.
* Licensed under Apache License 2.0 https://www.apache.org/licenses/LICENSE-2.0
*/`.trim(),
}

if (!!name) {
config.name = name
}
return config
}

export {
createInputConfig,
createOutputConfig,
version,
env,
isDev,
isProd
}
Loading

0 comments on commit 4b87942

Please sign in to comment.