面向前端项目的交互式开发环境启动器。
Dev Runway 适合在 shell 命令之上增加一层轻量编排:
start / build 流程它适合简单到中度复杂的场景,不是工作流引擎。
pnpm add -D dev-runway
npx dev-runway init
npx dev-runway start
在项目根目录创建 runway.config.ts:
import type { Config } from 'dev-runway'
export default {
defaultCommands: {
start: {
cmd: 'pnpm',
args: ['run', 'dev', '--mode', '{{environment.value}}'],
},
build: {
cmd: 'pnpm',
args: ['run', 'build'],
},
},
environments: [
{ name: 'development', value: 'development', description: '开发环境' },
{ name: 'staging', value: 'staging', description: '预发布环境' },
{ name: 'production', value: 'production', description: '生产环境' },
],
} satisfies Partial<Config>
Dev Runway 支持:
globalSelectorlocalSelector示例:
import type { Config } from 'dev-runway'
export default {
globalSelector: {
name: 'platform',
type: 'selector',
description: '选择目标平台',
options: [
{ label: 'Web', value: 'web' },
{ label: 'Desktop', value: 'desktop' },
],
},
environments: [
{
name: 'development',
value: 'development',
description: '开发环境',
localSelector: {
name: 'target',
type: 'selector',
description: '选择构建目标',
options: [
{ label: 'ES2019', value: 'es2019' },
{ label: 'ES2022', value: 'es2022' },
],
},
commands: {
start: {
cmd: 'pnpm',
args: ['run', 'dev', '--platform', '{{selectors.platform}}', '--target', '{{target}}'],
},
},
},
],
} satisfies Partial<Config>
CLI 用法:
dev-runway start --platform=web --target es2022
同时支持:
--platform=web--platform web可以在主命令前后执行 hook:
globalPreHooks: [
{ type: 'command', cmd: 'pnpm', args: ['install'] },
],
globalPostHooks: [
{
type: 'function',
fn: async (environment) => {
console.log(`${environment.name} 已就绪`)
},
},
]
可用占位符:
{{environment.value}}{{environment.name}}{{environment.description}}{{selectors.foo}}{{foo}},作为选择器值的简写dev-runway build --env production --platform web
或者使用环境变量:
export RUNWAY_ENV_VALUE=production
export RUNWAY_SELECTOR_PLATFORM=web
dev-runway build
优先级:
加载用户配置时:
environments 永远整体替换默认环境这样既保留默认值,也避免用户显式数组被隐式拼接。
dev-runway startdev-runway builddev-runway initdev-runway listdev-runway <custom-command>