任务执行 - Task

steamer-plugin-task

并行或串行执行自定义任务

NPM Version Travis Deps Coverage

添加任务

  1. steamer task --add [task name]
  2. // 如:
  3. steamer task --add alloyteam
  4. // 1. 全局安装 steamer-task-alloyteam
  5. // 2. 将 steamer-task-alloyteam 里的 .steamer 内容全数拷贝到项目的 .steamer内
  6. // 3. 安装 steamer-task-alloyteam 任务所需依赖到项目中

任务配置

  1. // 自动生成配置
  2. steamer task
  3. // .steamer/steamer-plugin-task.js
  4. /**
  5. * 如果 task 是一个文件路径字符串,并且存在,文件会被 require 之后,执行
  6. * 如果 task 是字符串且中间有空格分割,task 会被解析成命令行,直接用 spawn 执行
  7. */
  8. module.exports = {
  9. "plugin": "steamer-plugin-task",
  10. "config": {
  11. // 用对象写法是并行运行命令
  12. "dev": {
  13. 0: "steamer list",
  14. 1: "cde.js",
  15. },
  16. // 用数组写法是串行运行命令
  17. "dist": [
  18. "steamer kit -l",
  19. "bcd.js",
  20. "abc.js"
  21. ]
  22. }
  23. };
  24. // .steamer/task
  25. task
  26. |-- abc.js
  27. |-- bcd.js
  28. |-- cde.js
  29. |-- def.js
  30. // 并行任务
  31. // cde.js
  32. module.exports = function (ctx) {
  33. console.log('cde');
  34. };
  35. // def.js
  36. module.exports = function (ctx) {
  37. console.log('def');
  38. };
  39. // 串行任务
  40. // bcd.js
  41. module.exports = function(ctx, next) {
  42. console.log('bcd');
  43. next();
  44. };
  45. // abc.js, 最后一个任务无须执行next
  46. module.exports = function(ctx) {
  47. console.log('abc');
  48. };

并行或串行运行任务

  1. // 并行运行 dev 的命令
  2. steamer task dev
  3. start running task: steamer list
  4. start running task: cde.js
  5. // output from node cde.js
  6. finishing task: cde.js
  7. // output from steamer list
  8. finishing task: steamer list
  9. // 串行运行 dist 的命令
  10. start running task: steamer kit -l
  11. // output from steamer list
  12. steamer task dist
  13. start running task: bcd.js
  14. // 1 second later
  15. // output from node bcd.js
  16. start running task: abc.js
  17. // out from node abc.js