From ff32d23aacc4e8c3ac38a49e8a0aadd49a6df20b Mon Sep 17 00:00:00 2001 From: "Jesse.Feng" Date: Sun, 20 Apr 2025 17:38:22 +0800 Subject: [PATCH 1/4] feat(create-vite-lib-starter): 1.0.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改发布脚本 --- .../create-vite-lib-starter/bin/index.mjs | 4 +- packages/create-vite-lib-starter/package.json | 7 +-- release.mjs | 48 +++++++++++++++---- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/packages/create-vite-lib-starter/bin/index.mjs b/packages/create-vite-lib-starter/bin/index.mjs index df0c4a5..68a198b 100755 --- a/packages/create-vite-lib-starter/bin/index.mjs +++ b/packages/create-vite-lib-starter/bin/index.mjs @@ -4,7 +4,7 @@ import { basename, dirname, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; import { ensureDir } from 'fs-extra'; -import { generateStarter } from 'vp-runtime-helper'; +import { displayTime, generateStarter } from 'vp-runtime-helper'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); @@ -20,10 +20,12 @@ async function run() { const templateDir = resolve(__dirname, '..'); const packageName = basename(targetDir); + const startTime = Date.now(); await generateStarter(templateDir, targetDir, { name: packageName, dependencies: {} }); + console.info(`Generated ${packageName} in ${displayTime(Date.now() - startTime)}.`); } run(); diff --git a/packages/create-vite-lib-starter/package.json b/packages/create-vite-lib-starter/package.json index de0b5b2..48e1e12 100644 --- a/packages/create-vite-lib-starter/package.json +++ b/packages/create-vite-lib-starter/package.json @@ -1,6 +1,6 @@ { "name": "create-vite-lib-starter", - "version": "1.0.0", + "version": "1.0.1", "types": "dist/index.d.ts", "module": "dist/index.mjs", "main": "dist/index.js", @@ -45,9 +45,10 @@ }, "dependencies": { "@types/fs-extra": "^11.0.4", - "fs-extra": "^11.3.0" + "fs-extra": "^11.3.0", + "vp-runtime-helper": "workspace:^" }, "files": [ - "dist/" + "dist" ] } \ No newline at end of file diff --git a/release.mjs b/release.mjs index 33693c6..2c656db 100644 --- a/release.mjs +++ b/release.mjs @@ -9,6 +9,17 @@ import { request } from 'undici'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); +const recordMap = new Map(); +class Info { + constructor(name) { + this.messages = []; + this.name = name; + } + push(message) { + this.messages.push(`[${this.name}] - ${message}`); + } +} + async function getLatestVersion(pkgName) { const { body } = await request(`https://registry.npmjs.org/${pkgName}`); @@ -18,7 +29,7 @@ async function getLatestVersion(pkgName) { return null; } const { latest } = pkg['dist-tags']; - console.info(`Latest version of '${pkgName}' is '${latest}'.`); + recordMap.get(pkgName).push(`Latest version is '${latest}'.`); return latest; } @@ -37,39 +48,56 @@ function release(pkg, currentDir) { child.stderr.on('data', (data) => { err += data; }); + child.stderr.on('error', (err) => { + reject(err); + }); child.on('error', (err) => { reject(err); }); child.on('close', (code) => { if (code === 0) { - console.info(`'${name}' released successfully!`); + recordMap.get(name).push(`'${name}@${pkg.version}' released successfully!`); resolve(); } else { - reject(new Error(`'${name}' release failed!${EOL}${err}`)); + reject(new Error(`'${name}' release failed! ${code}${EOL}${err}`)); } }); }); } async function run() { const packagesDir = join(__dirname, 'packages'); - await Promise.all( + return Promise.all( (await readdir(packagesDir)).map((pkgName) => (async () => { + const info = new Info(pkgName); + recordMap.set(pkgName, info); + const latestVersion = await getLatestVersion(pkgName); const packageDir = join(packagesDir, pkgName); const pkgPath = join(packageDir, 'package.json'); const pkg = JSON.parse(await readFile(pkgPath, 'utf-8')); if (pkg.version !== latestVersion) { - return release(pkg, packageDir); + info.push(`Start to release '${pkgName} '...`); + await release(pkg, packageDir); + } + else { + info.push(`'${pkgName}@${pkg.version}' is up to date!`); } - console.info(`'${pkgName}' is up to date!`); + return info; })()) ); } -run().catch((err) => { - console.error(err); - process.exit(1); -}); +run().then( + (infos) => { + for (const info of infos) { + console.info(info.messages.join(EOL) + EOL); + } + }, + (err) => { + console.error(err); + process.exit(1); + } +); From e3255cba77b16c8ec9823c0c93f5bbe1984dab0c Mon Sep 17 00:00:00 2001 From: "Jesse.Feng" Date: Sun, 20 Apr 2025 20:30:11 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(cs-runtime-helper):=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/npm-publish.yml | 5 ++- package.json | 6 ++- .../create-vite-lib-starter/bin/index.mjs | 2 +- packages/create-vite-lib-starter/package.json | 6 +-- packages/cs-runtime-helper/LICENSE | 21 +++++++++ packages/cs-runtime-helper/README.md | 14 ++++++ packages/cs-runtime-helper/package.json | 43 +++++++++++++++++++ .../src/generateStarter.ts | 0 packages/cs-runtime-helper/src/index.ts | 1 + .../cs-runtime-helper/tsconfig.build.json | 15 +++++++ packages/cs-runtime-helper/vite.config.mts | 31 +++++++++++++ packages/vite-plugin-build-chunk/package.json | 4 +- packages/vite-plugin-combine/package.json | 4 +- packages/vite-plugin-cp/package.json | 4 +- packages/vite-plugin-external/package.json | 6 +-- packages/vite-plugin-hook-use/package.json | 4 +- packages/vite-plugin-include-css/package.json | 4 +- packages/vite-plugin-mock-data/package.json | 4 +- .../vite-plugin-reverse-proxy/package.json | 4 +- .../package.json | 4 +- packages/vite-plugin-view/package.json | 4 +- packages/vp-runtime-helper/package.json | 4 +- packages/vp-runtime-helper/src/index.ts | 1 - release.mjs | 18 +++++--- 24 files changed, 170 insertions(+), 39 deletions(-) create mode 100644 packages/cs-runtime-helper/LICENSE create mode 100644 packages/cs-runtime-helper/README.md create mode 100644 packages/cs-runtime-helper/package.json rename packages/{vp-runtime-helper => cs-runtime-helper}/src/generateStarter.ts (100%) create mode 100644 packages/cs-runtime-helper/src/index.ts create mode 100644 packages/cs-runtime-helper/tsconfig.build.json create mode 100644 packages/cs-runtime-helper/vite.config.mts diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 94f943a..fc5315e 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -41,7 +41,8 @@ jobs: with: version: 10 - run: npm run deps - - run: npm run build:vite-plugin-deps - - run: npm run release:all + - run: npm run build:vite-plugin-deps # 构建 vite-plugin 依赖 + - run: npm run build:starters # 构建 starter 依赖 + - run: npm run release:all # 发布所有包 env: NODE_AUTH_TOKEN: ${{secrets.npm_token}} diff --git a/package.json b/package.json index e60425d..c720b30 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,9 @@ "docs:build": "vitepress build docs", "docs:preview": "vitepress preview docs", "release:all": "node ./release.mjs", - "build:vite-plugin-deps": "pnpm run --parallel --filter=vite-plugin-external... build:lib", - "build:all": "npm run build:vite-plugin-deps && pnpm run --parallel --filter=vite-plugin-* --filter=!vite-plugin-external build:lib", + "build:vite-plugin-deps": "pnpm run --parallel --filter=vite-plugin-external... build", + "build:starters": "pnpm run --parallel --filter=*-starter... build", + "build:all": "npm run build:vite-plugin-deps && pnpm run --parallel --filter=vite-plugin-* --filter=!vite-plugin-external build", "test:all": "npm run build:all && pnpm run --filter=*-demo -r --parallel /^build:*/" }, "repository": { @@ -48,6 +49,7 @@ "eslint-plugin-simple-import-sort": "^12.1.0", "husky": "^8.0.3", "lint-staged": "^12.5.0", + "picocolors": "^1.0.0", "react": "^16.14.0" } } \ No newline at end of file diff --git a/packages/create-vite-lib-starter/bin/index.mjs b/packages/create-vite-lib-starter/bin/index.mjs index 68a198b..ff6c452 100755 --- a/packages/create-vite-lib-starter/bin/index.mjs +++ b/packages/create-vite-lib-starter/bin/index.mjs @@ -25,7 +25,7 @@ async function run() { name: packageName, dependencies: {} }); - console.info(`Generated ${packageName} in ${displayTime(Date.now() - startTime)}.`); + console.info(`Generated '${packageName}' in ${displayTime(Date.now() - startTime)}.`); } run(); diff --git a/packages/create-vite-lib-starter/package.json b/packages/create-vite-lib-starter/package.json index 48e1e12..6242f2a 100644 --- a/packages/create-vite-lib-starter/package.json +++ b/packages/create-vite-lib-starter/package.json @@ -1,6 +1,6 @@ { "name": "create-vite-lib-starter", - "version": "1.0.1", + "version": "1.0.2", "types": "dist/index.d.ts", "module": "dist/index.mjs", "main": "dist/index.js", @@ -45,8 +45,8 @@ }, "dependencies": { "@types/fs-extra": "^11.0.4", - "fs-extra": "^11.3.0", - "vp-runtime-helper": "workspace:^" + "cs-runtime-helper": "workspace:^", + "fs-extra": "^11.3.0" }, "files": [ "dist" diff --git a/packages/cs-runtime-helper/LICENSE b/packages/cs-runtime-helper/LICENSE new file mode 100644 index 0000000..2720669 --- /dev/null +++ b/packages/cs-runtime-helper/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Jesse Feng + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/cs-runtime-helper/README.md b/packages/cs-runtime-helper/README.md new file mode 100644 index 0000000..4a99b59 --- /dev/null +++ b/packages/cs-runtime-helper/README.md @@ -0,0 +1,14 @@ +# cs-runtime-helper + +[![npm package](https://nodei.co/npm/cs-runtime-helper.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/cs-runtime-helper) + +> Helper functions used when developing create starter + +[![NPM version](https://img.shields.io/npm/v/cs-runtime-helper.svg?style=flat)](https://npmjs.org/package/cs-runtime-helper) +[![NPM Downloads](https://img.shields.io/npm/dm/cs-runtime-helper.svg?style=flat)](https://npmjs.org/package/cs-runtime-helper) + +## Installation + +```bash +npm install cs-runtime-helper --save +``` \ No newline at end of file diff --git a/packages/cs-runtime-helper/package.json b/packages/cs-runtime-helper/package.json new file mode 100644 index 0000000..9e64e5b --- /dev/null +++ b/packages/cs-runtime-helper/package.json @@ -0,0 +1,43 @@ +{ + "name": "cs-runtime-helper", + "version": "1.0.0", + "description": "Create starter runtime helper.", + "types": "dist/index.d.ts", + "module": "dist/index.mjs", + "main": "dist/index.js", + "engines": { + "node": ">=14.18.0", + "vite": ">=3.1.0" + }, + "scripts": { + "build": "vite build", + "watch": "vite build --watch", + "prepublishOnly": "npm run build", + "release": "npm publish" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/fengxinming/vite-plugins.git", + "directory": "packages/cs-runtime-helper" + }, + "keywords": [ + "vite", + "cs-runtime-helper" + ], + "author": "Jesse Feng ", + "license": "MIT", + "bugs": { + "url": "https://github.com/fengxinming/vite-plugins/issues" + }, + "homepage": "https://fengxinming.github.io/vite-plugins/", + "devDependencies": { + "@rollup/plugin-typescript": "^12.1.2", + "vite": "^6.1.0" + }, + "dependencies": { + "fs-extra": "^11.3.0" + }, + "files": [ + "dist" + ] +} \ No newline at end of file diff --git a/packages/vp-runtime-helper/src/generateStarter.ts b/packages/cs-runtime-helper/src/generateStarter.ts similarity index 100% rename from packages/vp-runtime-helper/src/generateStarter.ts rename to packages/cs-runtime-helper/src/generateStarter.ts diff --git a/packages/cs-runtime-helper/src/index.ts b/packages/cs-runtime-helper/src/index.ts new file mode 100644 index 0000000..3fa858e --- /dev/null +++ b/packages/cs-runtime-helper/src/index.ts @@ -0,0 +1 @@ +export * from './generateStarter'; diff --git a/packages/cs-runtime-helper/tsconfig.build.json b/packages/cs-runtime-helper/tsconfig.build.json new file mode 100644 index 0000000..cb2c71a --- /dev/null +++ b/packages/cs-runtime-helper/tsconfig.build.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "declarationDir": "dist" + }, + "include": [ + "src", + "./node_modules/vite/client.d.ts" + ], + "exclude": [ + "dist" + ] +} \ No newline at end of file diff --git a/packages/cs-runtime-helper/vite.config.mts b/packages/cs-runtime-helper/vite.config.mts new file mode 100644 index 0000000..f8b7baa --- /dev/null +++ b/packages/cs-runtime-helper/vite.config.mts @@ -0,0 +1,31 @@ +import { builtinModules } from 'node:module'; + +import ts from '@rollup/plugin-typescript'; +import { defineConfig } from 'vite'; + +import { dependencies } from './package.json'; + +const externals = Object.keys(dependencies) + .concat(builtinModules, 'vite') + .map((n) => new RegExp(`^${n}/?`)) + .concat(/^node:/); + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + ts({ + tsconfig: './tsconfig.build.json' + }) + ], + build: { + lib: { + entry: 'src/index.ts', + formats: ['es', 'cjs'], + fileName: '[name]' + }, + minify: false, + rollupOptions: { + external: externals + } + } +}); diff --git a/packages/vite-plugin-build-chunk/package.json b/packages/vite-plugin-build-chunk/package.json index b757062..9620afe 100644 --- a/packages/vite-plugin-build-chunk/package.json +++ b/packages/vite-plugin-build-chunk/package.json @@ -17,9 +17,9 @@ "vite": ">=3.1.0" }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "repository": { diff --git a/packages/vite-plugin-combine/package.json b/packages/vite-plugin-combine/package.json index 389eef9..062f11f 100644 --- a/packages/vite-plugin-combine/package.json +++ b/packages/vite-plugin-combine/package.json @@ -17,9 +17,9 @@ "vite": ">=3.1.0" }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "repository": { diff --git a/packages/vite-plugin-cp/package.json b/packages/vite-plugin-cp/package.json index f35363e..1bd91f8 100644 --- a/packages/vite-plugin-cp/package.json +++ b/packages/vite-plugin-cp/package.json @@ -17,9 +17,9 @@ "vite": ">=3.1.0" }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "repository": { diff --git a/packages/vite-plugin-external/package.json b/packages/vite-plugin-external/package.json index 47b4bd3..737bcef 100644 --- a/packages/vite-plugin-external/package.json +++ b/packages/vite-plugin-external/package.json @@ -13,9 +13,9 @@ } }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "engines": { @@ -40,7 +40,7 @@ "homepage": "https://fengxinming.github.io/vite-plugins/plugins/vite-plugin-external/quick-start", "dependencies": { "fs-extra": "^11.1.1", - "is-what-type": "^1.1.0", + "is-what-type": "^1.1.1", "vp-runtime-helper": "workspace:^" }, "devDependencies": { diff --git a/packages/vite-plugin-hook-use/package.json b/packages/vite-plugin-hook-use/package.json index f54ab0b..f858c09 100644 --- a/packages/vite-plugin-hook-use/package.json +++ b/packages/vite-plugin-hook-use/package.json @@ -17,9 +17,9 @@ "vite": ">=3.1.0" }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "repository": { diff --git a/packages/vite-plugin-include-css/package.json b/packages/vite-plugin-include-css/package.json index ddf1c3a..b031757 100644 --- a/packages/vite-plugin-include-css/package.json +++ b/packages/vite-plugin-include-css/package.json @@ -13,9 +13,9 @@ } }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "engines": { diff --git a/packages/vite-plugin-mock-data/package.json b/packages/vite-plugin-mock-data/package.json index 560db8d..b6a7c29 100644 --- a/packages/vite-plugin-mock-data/package.json +++ b/packages/vite-plugin-mock-data/package.json @@ -17,9 +17,9 @@ "vite": ">=3.1.0" }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "repository": { diff --git a/packages/vite-plugin-reverse-proxy/package.json b/packages/vite-plugin-reverse-proxy/package.json index aff87e3..b55275b 100644 --- a/packages/vite-plugin-reverse-proxy/package.json +++ b/packages/vite-plugin-reverse-proxy/package.json @@ -17,9 +17,9 @@ "vite": ">=3.1.0" }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "repository": { diff --git a/packages/vite-plugin-separate-importer/package.json b/packages/vite-plugin-separate-importer/package.json index 501a178..69c09d2 100644 --- a/packages/vite-plugin-separate-importer/package.json +++ b/packages/vite-plugin-separate-importer/package.json @@ -17,9 +17,9 @@ "vite": ">=3.1.0" }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "repository": { diff --git a/packages/vite-plugin-view/package.json b/packages/vite-plugin-view/package.json index b492ebf..f09040f 100644 --- a/packages/vite-plugin-view/package.json +++ b/packages/vite-plugin-view/package.json @@ -17,9 +17,9 @@ "vite": ">=3.1.0" }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "pnpm publish --no-git-checks" }, "repository": { diff --git a/packages/vp-runtime-helper/package.json b/packages/vp-runtime-helper/package.json index 4f1a8c0..762c7f1 100644 --- a/packages/vp-runtime-helper/package.json +++ b/packages/vp-runtime-helper/package.json @@ -17,9 +17,9 @@ "vite": ">=3.1.0" }, "scripts": { - "build:lib": "vite build", + "build": "vite build", "watch": "vite build --watch", - "prepublishOnly": "npm run build:lib", + "prepublishOnly": "npm run build", "release": "npm publish" }, "repository": { diff --git a/packages/vp-runtime-helper/src/index.ts b/packages/vp-runtime-helper/src/index.ts index e5936e2..f446ceb 100644 --- a/packages/vp-runtime-helper/src/index.ts +++ b/packages/vp-runtime-helper/src/index.ts @@ -30,7 +30,6 @@ export function sleep(ms: number): Promise { export * from './colorful'; export * from './depsCache'; export * from './devServer'; -export * from './generateStarter'; export * from './getValue'; export * from './hash'; export * from './logger'; diff --git a/release.mjs b/release.mjs index 2c656db..86567c0 100644 --- a/release.mjs +++ b/release.mjs @@ -4,6 +4,7 @@ import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; import { spawn } from 'cross-spawn'; +import picocolors from 'picocolors'; import { request } from 'undici'; const __filename = fileURLToPath(import.meta.url); @@ -15,8 +16,11 @@ class Info { this.messages = []; this.name = name; } - push(message) { - this.messages.push(`[${this.name}] - ${message}`); + info(message) { + this.messages.push(picocolors.green(`[${this.name}] - ${message}`)); + } + error(message) { + this.messages.push(picocolors.red(`[${this.name}] - ${message}`)); } } @@ -25,11 +29,11 @@ async function getLatestVersion(pkgName) { const pkg = await body.json(); if (pkg.error) { - console.error(`Package '${pkgName}' not found!`); + recordMap.get(pkgName).error(`Package '${pkgName}' not found!`); return null; } const { latest } = pkg['dist-tags']; - recordMap.get(pkgName).push(`Latest version is '${latest}'.`); + recordMap.get(pkgName).info(`Latest version is '${latest}'.`); return latest; } @@ -56,7 +60,7 @@ function release(pkg, currentDir) { }); child.on('close', (code) => { if (code === 0) { - recordMap.get(name).push(`'${name}@${pkg.version}' released successfully!`); + recordMap.get(name).info(`'${name}@${pkg.version}' released successfully!`); resolve(); } else { @@ -78,11 +82,11 @@ async function run() { const pkg = JSON.parse(await readFile(pkgPath, 'utf-8')); if (pkg.version !== latestVersion) { - info.push(`Start to release '${pkgName} '...`); + info.info(`Start to release '${pkgName} '...`); await release(pkg, packageDir); } else { - info.push(`'${pkgName}@${pkg.version}' is up to date!`); + info.info(`'${pkgName}@${pkg.version}' is up to date!`); } return info; From f588c3e87af9dd24a6b83e8182abb8b4f21339f0 Mon Sep 17 00:00:00 2001 From: "Jesse.Feng" Date: Tue, 22 Apr 2025 00:05:55 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat(create-vite-lib-starter):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 ++-- packages/create-vite-lib-starter/.npmignore | 2 ++ packages/create-vite-lib-starter/bin/index.mjs | 8 ++++++-- .../docs/.vitepress/config/en.mts | 4 ++-- .../docs/.vitepress/config/shared.mts | 2 +- .../docs/.vitepress/config/zh.mts | 4 ++-- packages/create-vite-lib-starter/package.json | 7 ++----- packages/create-vite-lib-starter/tsconfig.json | 2 ++ release.mjs | 2 +- tsconfig.json | 10 ++++++---- 10 files changed, 26 insertions(+), 19 deletions(-) create mode 100644 packages/create-vite-lib-starter/.npmignore diff --git a/package.json b/package.json index c720b30..2923d9e 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "docs:preview": "vitepress preview docs", "release:all": "node ./release.mjs", "build:vite-plugin-deps": "pnpm run --parallel --filter=vite-plugin-external... build", - "build:starters": "pnpm run --parallel --filter=*-starter... build", + "build:starters": "pnpm run --parallel --filter=*-starter^... build", "build:all": "npm run build:vite-plugin-deps && pnpm run --parallel --filter=vite-plugin-* --filter=!vite-plugin-external build", "test:all": "npm run build:all && pnpm run --filter=*-demo -r --parallel /^build:*/" }, @@ -30,6 +30,7 @@ "dependencies": { "cross-spawn": "^7.0.6", "markdown-it-mathjax3": "^4.3.2", + "picocolors": "^1.0.0", "undici": "^7.8.0", "vitepress": "^1.6.3", "vitepress-plugin-group-icons": "^1.3.8" @@ -49,7 +50,6 @@ "eslint-plugin-simple-import-sort": "^12.1.0", "husky": "^8.0.3", "lint-staged": "^12.5.0", - "picocolors": "^1.0.0", "react": "^16.14.0" } } \ No newline at end of file diff --git a/packages/create-vite-lib-starter/.npmignore b/packages/create-vite-lib-starter/.npmignore new file mode 100644 index 0000000..db4c6d9 --- /dev/null +++ b/packages/create-vite-lib-starter/.npmignore @@ -0,0 +1,2 @@ +dist +node_modules \ No newline at end of file diff --git a/packages/create-vite-lib-starter/bin/index.mjs b/packages/create-vite-lib-starter/bin/index.mjs index ff6c452..3daabd1 100755 --- a/packages/create-vite-lib-starter/bin/index.mjs +++ b/packages/create-vite-lib-starter/bin/index.mjs @@ -3,8 +3,8 @@ import { basename, dirname, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; +import { generateStarter } from 'cs-runtime-helper'; import { ensureDir } from 'fs-extra'; -import { displayTime, generateStarter } from 'vp-runtime-helper'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); @@ -23,9 +23,13 @@ async function run() { const startTime = Date.now(); await generateStarter(templateDir, targetDir, { name: packageName, + version: '1.0.0', + files: [ + 'dist' + ], dependencies: {} }); - console.info(`Generated '${packageName}' in ${displayTime(Date.now() - startTime)}.`); + console.info(`Generated '${packageName}' in ${(Date.now() - startTime)} ms.`); } run(); diff --git a/packages/create-vite-lib-starter/docs/.vitepress/config/en.mts b/packages/create-vite-lib-starter/docs/.vitepress/config/en.mts index 5f7c686..3527234 100644 --- a/packages/create-vite-lib-starter/docs/.vitepress/config/en.mts +++ b/packages/create-vite-lib-starter/docs/.vitepress/config/en.mts @@ -1,9 +1,9 @@ import { defineConfig } from 'vitepress' -import { generateAPISidebar } from './shared.mts' +import { generateAPISidebar } from './shared.mjs' // https://vitepress.dev/reference/site-config export const en = defineConfig({ - description: "A collection of custom plugins designed to enhance the functionality of the Vite build tool.", + description: "Here is description.", lang: 'en-US', themeConfig: { // https://vitepress.dev/reference/default-theme-config diff --git a/packages/create-vite-lib-starter/docs/.vitepress/config/shared.mts b/packages/create-vite-lib-starter/docs/.vitepress/config/shared.mts index 779a832..8746c10 100644 --- a/packages/create-vite-lib-starter/docs/.vitepress/config/shared.mts +++ b/packages/create-vite-lib-starter/docs/.vitepress/config/shared.mts @@ -21,7 +21,7 @@ export const shared = defineConfig({ // We use `[!!code` in demo to prevent transformation, here we revert it back. { postprocess(code) { - return code.replace(/\[\!\!code/g, '[!code') + return code.replace(/\[!!code/g, '[!code'); } } ], diff --git a/packages/create-vite-lib-starter/docs/.vitepress/config/zh.mts b/packages/create-vite-lib-starter/docs/.vitepress/config/zh.mts index 689ffd4..baee03a 100644 --- a/packages/create-vite-lib-starter/docs/.vitepress/config/zh.mts +++ b/packages/create-vite-lib-starter/docs/.vitepress/config/zh.mts @@ -1,9 +1,9 @@ import { defineConfig } from 'vitepress' -import { generateAPISidebar } from './shared.mts' +import { generateAPISidebar } from './shared.mjs' // https://vitepress.dev/reference/site-config export const zh = defineConfig({ - description: "一个包含多个自定义插件的集合,用于增强 Vite 构建工具的功能。", + description: "这里是描述。", lang: 'zh-CN', themeConfig: { // https://vitepress.dev/reference/default-theme-config diff --git a/packages/create-vite-lib-starter/package.json b/packages/create-vite-lib-starter/package.json index 6242f2a..d4085fb 100644 --- a/packages/create-vite-lib-starter/package.json +++ b/packages/create-vite-lib-starter/package.json @@ -1,6 +1,6 @@ { "name": "create-vite-lib-starter", - "version": "1.0.2", + "version": "1.0.5", "types": "dist/index.d.ts", "module": "dist/index.mjs", "main": "dist/index.js", @@ -47,8 +47,5 @@ "@types/fs-extra": "^11.0.4", "cs-runtime-helper": "workspace:^", "fs-extra": "^11.3.0" - }, - "files": [ - "dist" - ] + } } \ No newline at end of file diff --git a/packages/create-vite-lib-starter/tsconfig.json b/packages/create-vite-lib-starter/tsconfig.json index 73c30fb..cca7d77 100644 --- a/packages/create-vite-lib-starter/tsconfig.json +++ b/packages/create-vite-lib-starter/tsconfig.json @@ -3,6 +3,8 @@ "include": [ "./src/**/*.ts", "./test/*.ts", + "./docs/.vitepress/**/*.ts", + "./docs/.vitepress/**/*.mts", "./node_modules/vite/client.d.ts", "./vite.config.mts" ] diff --git a/release.mjs b/release.mjs index 86567c0..39f1edb 100644 --- a/release.mjs +++ b/release.mjs @@ -82,7 +82,7 @@ async function run() { const pkg = JSON.parse(await readFile(pkgPath, 'utf-8')); if (pkg.version !== latestVersion) { - info.info(`Start to release '${pkgName} '...`); + info.info(`Start to release '${pkgName}'...`); await release(pkg, packageDir); } else { diff --git a/tsconfig.json b/tsconfig.json index 398c70e..68d3de0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,10 +2,12 @@ "extends": "./tsconfig.base.json", "include": [ "./node_modules/vite/client.d.ts", - "packages/**/*.ts", - "packages/**/*.mts", - "examples/**/*.ts", - "examples/**/*.mts", + "./docs/.vitepress/**/*.ts", + "./docs/.vitepress/**/*.mts", + "./packages/**/*.ts", + "./packages/**/*.mts", + "./examples/**/*.ts", + "./examples/**/*.mts", ], "exclude": [ "dist", From 1acd60f5e8ee5713c0269dcd66e01d54fba350a3 Mon Sep 17 00:00:00 2001 From: "Jesse.Feng" Date: Thu, 24 Apr 2025 00:45:09 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat(vite-plugin-separate-importer):=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=AF=E9=80=89=E5=8F=82=E6=95=B0=20apply?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../docs/.vitepress/config/en.mts | 2 +- .../docs/.vitepress/config/shared.mts | 2 +- .../docs/.vitepress/config/zh.mts | 2 +- packages/vite-plugin-combine/package.json | 2 +- packages/vite-plugin-combine/src/index.ts | 1 + packages/vite-plugin-combine/src/typings.ts | 8 ++++++++ .../vite-plugin-separate-importer/package.json | 4 +--- .../vite-plugin-separate-importer/src/index.ts | 9 ++++++--- .../vite-plugin-separate-importer/src/logger.ts | 14 ++++---------- .../vite-plugin-separate-importer/src/typings.ts | 9 +++++++++ 11 files changed, 34 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 201a6b7..89864cd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # vite-plugins -> `vite-plugins` is a collection of custom plugins designed to enhance the functionality of the Vite build tool. +> A collection of custom plugins designed to enhance the functionality of the Vite build tool. ## Plugin List diff --git a/packages/create-vite-lib-starter/docs/.vitepress/config/en.mts b/packages/create-vite-lib-starter/docs/.vitepress/config/en.mts index 3527234..009e8aa 100644 --- a/packages/create-vite-lib-starter/docs/.vitepress/config/en.mts +++ b/packages/create-vite-lib-starter/docs/.vitepress/config/en.mts @@ -34,7 +34,7 @@ export const en = defineConfig({ }, socialLinks: [ - { icon: 'github', link: 'https://github.com/fengxinming/create-vite-lib-starter.git' } + { icon: 'github', link: 'https://github.com/fengxinming/vite-plugins' } ] } }) \ No newline at end of file diff --git a/packages/create-vite-lib-starter/docs/.vitepress/config/shared.mts b/packages/create-vite-lib-starter/docs/.vitepress/config/shared.mts index 8746c10..0788843 100644 --- a/packages/create-vite-lib-starter/docs/.vitepress/config/shared.mts +++ b/packages/create-vite-lib-starter/docs/.vitepress/config/shared.mts @@ -49,7 +49,7 @@ export const shared = defineConfig({ themeConfig: { socialLinks: [ - { icon: 'github', link: 'https://github.com/fengxinming/create-vite-lib-starter' } + { icon: 'github', link: 'https://github.com/fengxinming/vite-plugins' } ] }, diff --git a/packages/create-vite-lib-starter/docs/.vitepress/config/zh.mts b/packages/create-vite-lib-starter/docs/.vitepress/config/zh.mts index baee03a..72e1b28 100644 --- a/packages/create-vite-lib-starter/docs/.vitepress/config/zh.mts +++ b/packages/create-vite-lib-starter/docs/.vitepress/config/zh.mts @@ -34,7 +34,7 @@ export const zh = defineConfig({ }, socialLinks: [ - { icon: 'github', link: 'https://github.com/fengxinming/create-vite-lib-starter.git' } + { icon: 'github', link: 'https://github.com/fengxinming/vite-plugins' } ] } }) diff --git a/packages/vite-plugin-combine/package.json b/packages/vite-plugin-combine/package.json index 062f11f..6714d50 100644 --- a/packages/vite-plugin-combine/package.json +++ b/packages/vite-plugin-combine/package.json @@ -1,6 +1,6 @@ { "name": "vite-plugin-combine", - "version": "6.1.2", + "version": "6.1.3", "description": "Combines multiple module files into a single target file. It supports four modes: named exports, default exports, automatic exports, and no exports, and can auto-generate corresponding import statements based on configuration.", "types": "./dist/index.d.ts", "module": "./dist/index.mjs", diff --git a/packages/vite-plugin-combine/src/index.ts b/packages/vite-plugin-combine/src/index.ts index 3ae03cd..488b2d0 100644 --- a/packages/vite-plugin-combine/src/index.ts +++ b/packages/vite-plugin-combine/src/index.ts @@ -261,6 +261,7 @@ export default function pluginCombine(opts: Options) { return { name: PLUGIN_NAME, enforce: ('enforce' in opts) ? opts.enforce : 'post', + apply: ('apply' in opts) ? opts.apply : 'build', async config(config) { const inputs = files.concat(absTarget); diff --git a/packages/vite-plugin-combine/src/typings.ts b/packages/vite-plugin-combine/src/typings.ts index c55ef63..22ad13b 100644 --- a/packages/vite-plugin-combine/src/typings.ts +++ b/packages/vite-plugin-combine/src/typings.ts @@ -1,4 +1,5 @@ import type { NullValue } from 'rollup'; +import type { ConfigEnv, UserConfig } from 'vite'; import type { LogLevel } from 'vp-runtime-helper'; export type { LogLevel }; @@ -44,6 +45,13 @@ export interface Options { */ enforce?: 'pre' | 'post'; + /** + * Apply the plugin only for serve or build, or on certain conditions. + * + * 应用插件仅在 serve 或 build 时,或满足某些条件的情况下。 + */ + apply?: 'serve' | 'build' | ((this: void, config: UserConfig, env: ConfigEnv) => boolean); + /** * Current Working Directory. * diff --git a/packages/vite-plugin-separate-importer/package.json b/packages/vite-plugin-separate-importer/package.json index 69c09d2..35a4fa9 100644 --- a/packages/vite-plugin-separate-importer/package.json +++ b/packages/vite-plugin-separate-importer/package.json @@ -1,6 +1,6 @@ { "name": "vite-plugin-separate-importer", - "version": "6.0.4", + "version": "6.1.0", "description": "Transform bulk imports from a single source module into individual file imports from the source module.", "types": "./dist/index.d.ts", "module": "./dist/index.mjs", @@ -38,8 +38,6 @@ }, "homepage": "https://fengxinming.github.io/vite-plugins/plugins/vite-plugin-separate-importer/quick-start", "dependencies": { - "base-log-factory": "^2.0.9", - "blf-colorful-appender": "^1.0.2", "es-module-lexer": "^1.5.0", "vp-runtime-helper": "workspace:^" }, diff --git a/packages/vite-plugin-separate-importer/src/index.ts b/packages/vite-plugin-separate-importer/src/index.ts index 326816d..a514914 100644 --- a/packages/vite-plugin-separate-importer/src/index.ts +++ b/packages/vite-plugin-separate-importer/src/index.ts @@ -83,9 +83,9 @@ function processLibs( if (typeof source === 'string') { source = { es: source }; } - const { es, cjs } = source || {}; + const { es, cjs, name: newImporter } = source || {}; if (es) { - newImportDeclarationStr += `import ${importer} from "${es}";${EOL}`; + newImportDeclarationStr += `import ${newImporter || importer} from "${es}";${EOL}`; if (cjs) { cjsTransformers.push((code) => { return code.replace(es, cjs); @@ -161,8 +161,10 @@ function processLibs( * @returns a vite plugin */ function pluginSeparateImporter( - { enforce, libs = [], logLevel, enableBanner }: Options = {} + opts: Options = {} ): Plugin | undefined { + const { enforce, libs = [], logLevel, enableBanner } = opts; + if (!Array.isArray(libs) || libs.length === 0) { logger.warn('No libs specified.'); return; @@ -201,6 +203,7 @@ function pluginSeparateImporter( return { name: PLUGIN_NAME, enforce, + apply: ('apply' in opts) ? opts.apply : 'build', async transform( code: string, diff --git a/packages/vite-plugin-separate-importer/src/logger.ts b/packages/vite-plugin-separate-importer/src/logger.ts index 8fcee89..2dbae68 100644 --- a/packages/vite-plugin-separate-importer/src/logger.ts +++ b/packages/vite-plugin-separate-importer/src/logger.ts @@ -1,13 +1,7 @@ -import { Level, Logger } from 'base-log-factory'; -import { ColorfulAppender } from 'blf-colorful-appender'; +import { logFactory } from 'vp-runtime-helper'; -import pkg from '../package.json'; +import { name } from '../package.json'; -export const PLUGIN_NAME = pkg.name; +export const PLUGIN_NAME = name; -export const logger = new Logger(PLUGIN_NAME, { - level: Level.WARN, - appenders: [ - new ColorfulAppender() - ] -}); +export const logger = logFactory.getLogger(PLUGIN_NAME); diff --git a/packages/vite-plugin-separate-importer/src/typings.ts b/packages/vite-plugin-separate-importer/src/typings.ts index df6fdc9..68abad7 100644 --- a/packages/vite-plugin-separate-importer/src/typings.ts +++ b/packages/vite-plugin-separate-importer/src/typings.ts @@ -1,7 +1,9 @@ import type { LogLevel } from 'base-log-factory'; +import type { ConfigEnv, UserConfig } from 'vite'; export interface ImportSource { es: string; cjs?: string; + name?: string; } export interface libConfig { @@ -30,6 +32,13 @@ export interface Options { */ enforce?: 'pre' | 'post'; + /** + * Apply the plugin only for serve or build, or on certain conditions. + * + * 应用插件仅在 serve 或 build 时,或满足某些条件的情况下。 + */ + apply?: 'serve' | 'build' | ((this: void, config: UserConfig, env: ConfigEnv) => boolean); + /** * 插件配置接口,用于定义待转换的库名称及其处理逻辑 * Interface for plugin configuration to define the library names and processing logic