@winner-fed/plugin-run
v1.0.1
Published
@winner-fed/plugin-run
Readme
@winner-fed/plugin-run
🚀 一个用于在 WinJS 项目中运行 JavaScript/TypeScript 脚本的插件
功能特性
- ✅ 支持运行 JavaScript 和 TypeScript 脚本
- ✅ 内置 TypeScript 支持,无需额外编译
- ✅ 支持全局导入配置
- ✅ 支持向脚本传递参数
- ✅ 使用 tsx 引擎,性能优异
安装
npm install @winner-fed/plugin-run --save-dev
# 或者
yarn add @winner-fed/plugin-run
# 或者
pnpm add @winner-fed/plugin-run使用方法
基本用法
在项目根目录下的配置文件中注册插件:
// .winrc.ts
export default {
plugins: ['@winner-fed/plugin-run'],
};运行脚本
# 运行 JavaScript 脚本
win run scripts/build.js
# 运行 TypeScript 脚本
win run scripts/deploy.ts
# 传递参数给脚本
win run scripts/deploy.ts --env production --force配置选项
globals
类型:string[]
默认值:[]
配置全局导入的模块,这些模块将在脚本执行前自动导入。
// .winrc.ts
export default {
plugins: ['@winner-fed/plugin-run'],
run: {
globals: [
'zx/globals', // 自动导入 zx 的全局方法
'dotenv/config', // 自动加载环境变量
],
},
};示例
基本脚本示例
创建一个简单的构建脚本:
// scripts/build.ts
import { execSync } from 'child_process';
import { readFileSync } from 'fs';
console.log('开始构建...');
// 读取 package.json
const pkg = JSON.parse(readFileSync('package.json', 'utf-8'));
console.log(`构建项目: ${pkg.name}@${pkg.version}`);
// 执行构建命令
execSync('npm run build', { stdio: 'inherit' });
console.log('构建完成!');运行脚本:
win run scripts/build.ts使用 zx 的脚本示例
配置全局导入 zx:
// .winrc.ts
export default {
plugins: ['@winner-fed/plugin-run'],
run: {
globals: ['zx/globals'],
},
};创建使用 zx 的脚本:
// scripts/deploy.ts
// 由于配置了 globals,zx 的方法会自动导入
const environment = argv.env || 'development';
const force = argv.force || false;
console.log(`部署环境: ${environment}`);
console.log(`强制部署: ${force}`);
// 使用 zx 的 $ 方法执行命令
await $`npm run build`;
if (environment === 'production') {
await $`npm run deploy:prod`;
} else {
await $`npm run deploy:dev`;
}
console.log('部署完成!');运行脚本:
win run scripts/deploy.ts --env production --force带参数的脚本示例
// scripts/version.ts
import { execSync } from 'child_process';
// 获取命令行参数
const [, , version, ...flags] = process.argv;
if (!version) {
console.error('请指定版本号');
process.exit(1);
}
console.log(`更新版本到: ${version}`);
console.log(`额外标志: ${flags.join(' ')}`);
// 更新版本
execSync(`npm version ${version} ${flags.join(' ')}`, { stdio: 'inherit' });
console.log('版本更新完成!');运行脚本:
win run scripts/version.ts 1.2.3 --no-git-tag-version技术实现
- 使用
tsx作为 TypeScript 执行引擎 - 支持 ES6+ 语法和 TypeScript 特性
- 通过
child_process.fork执行脚本 - 自动处理依赖导入和模块解析
注意事项
- 脚本文件必须是
.js或.ts扩展名 - 脚本将在项目根目录的上下文中执行
- 支持所有 Node.js 内置模块和已安装的 npm 包
- 脚本可以通过
process.argv或argv(如果使用 zx)访问命令行参数
许可证
MIT
