Updated build pipeline

This commit is contained in:
2024-09-20 10:29:43 +05:30
parent 5bb0e14670
commit eb12f43379
5 changed files with 89 additions and 4 deletions

29
build-tools/build.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
# Get the directory of the current script
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
rm -rf build
# Quality check
npx tsc
# Generate Styles (with unneeded js)
# vite build --config vite-css.config.ts
vite build
# Generated source bundle
# tsc -p tsconfig.cjs.build.json
# tsc -p tsconfig.es.build.json
# Cleanup unneeded js
# rm -f build/*.js
# # Copy image files
# find src/static -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" -o -name "*.svg" \) -exec cp {} build/cjs/static/ \;
# find src/static -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" -o -name "*.svg" \) -exec cp {} build/es/static/ \;
# Run Post processors: Update style imports in .js files, create component modules
node "$SCRIPT_DIR/post-processor.js" build/cjs
node "$SCRIPT_DIR/post-processor.js" build/es

View File

@@ -0,0 +1,33 @@
import { promises as fs } from "fs"
import { dirname, resolve } from "path"
import { fileURLToPath } from "url"
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const exclusions = ["enums.js", "navigator.js", "v4.js", "index.js"]
async function generateModule(fileName) {
if (!exclusions.includes(fileName)) {
const dir = fileName.slice(0, -3)
const name = `@armco/utils/${dir}`
const packageJsonContent = {
name,
main: `../cjs/${dir}.js`,
module: `../es/${dir}.js`,
types: `../types/${dir}.d.ts`,
}
const dirPath = resolve(__dirname, `../build/${dir}`)
try {
await fs.mkdir(dirPath, { recursive: true })
await fs.writeFile(
resolve(dirPath, "package.json"),
JSON.stringify(packageJsonContent, null, 2),
)
} catch (error) {
console.error(`Error processing directory ${dirPath}:`, error)
}
}
}
export default generateModule

View File

@@ -0,0 +1,23 @@
import { readdir } from "fs/promises"
import generateModule from "./generate-module.js"
async function postProcessor(dir) {
try {
const files = await readdir(dir)
await Promise.all(
files.map(async (file) => {
await generateModule(file, dir)
}),
)
} catch (error) {
console.error(`Error processing directory ${dir}:`, error)
}
}
const targetDir = process.argv[2]
if (targetDir) {
postProcessor(targetDir)
} else {
console.error("Please provide the build directory to run post processor on.")
process.exit(1)
}

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@armco/utils",
"version": "0.0.6",
"version": "0.0.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@armco/utils",
"version": "0.0.6",
"version": "0.0.7",
"license": "ISC",
"dependencies": {
"@armco/configs": "^0.0.3",

View File

@@ -1,9 +1,9 @@
{
"name": "@armco/utils",
"version": "0.0.6",
"version": "0.0.7",
"type": "module",
"scripts": {
"build": "rm -rf build && tsc && vite build",
"build": "./build-tools/build.sh",
"format": "prettier --write .",
"lint": "eslint .",
"publish:sh": "./publish.sh"