@winner-fed/plugin-run
npm install @winner-fed/plugin-run🚀 一个用于在 WinJS 项目中运行 JavaScript/TypeScript 脚本的插件
- ✅ 支持运行 JavaScript 和 TypeScript 脚本
- ✅ 内置 TypeScript 支持,无需额外编译
- ✅ 支持全局导入配置
- ✅ 支持向脚本传递参数
- ✅ 使用 tsx 引擎,性能优异
``bash`
npm install @winner-fed/plugin-run --save-dev或者
yarn add @winner-fed/plugin-run或者
pnpm add @winner-fed/plugin-run
在项目根目录下的配置文件中注册插件:
`javascript`
// .winrc.ts
export default {
plugins: ['@winner-fed/plugin-run'],
};
`bash运行 JavaScript 脚本
win run scripts/build.js
配置选项
$3
类型:
string[]
默认值:[]配置全局导入的模块,这些模块将在脚本执行前自动导入。
`javascript
// .winrc.ts
export default {
plugins: ['@winner-fed/plugin-run'],
run: {
globals: [
'zx/globals', // 自动导入 zx 的全局方法
'dotenv/config', // 自动加载环境变量
],
},
};
`示例
$3
创建一个简单的构建脚本:
`typescript
// 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('构建完成!');
`运行脚本:
`bash
win run scripts/build.ts
`$3
配置全局导入 zx:
`javascript
// .winrc.ts
export default {
plugins: ['@winner-fed/plugin-run'],
run: {
globals: ['zx/globals'],
},
};
`创建使用 zx 的脚本:
`typescript
// 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('部署完成!');
`运行脚本:
`bash
win run scripts/deploy.ts --env production --force
`$3
`typescript
// 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('版本更新完成!');
`运行脚本:
`bash
win run scripts/version.ts 1.2.3 --no-git-tag-version
`技术实现
- 使用
tsx 作为 TypeScript 执行引擎
- 支持 ES6+ 语法和 TypeScript 特性
- 通过 child_process.fork 执行脚本
- 自动处理依赖导入和模块解析注意事项
1. 脚本文件必须是
.js 或 .ts 扩展名
2. 脚本将在项目根目录的上下文中执行
3. 支持所有 Node.js 内置模块和已安装的 npm 包
4. 脚本可以通过 process.argv 或 argv`(如果使用 zx)访问命令行参数MIT