资讯专栏INFORMATION COLUMN

foy: 基于 nodejs 的轻量级通用 build 工具

Java_oldboy / 495人阅读

摘要:的下写的命令太多就很容易很乱,各种第三方轮子都只能解决一部分问题,总感觉不是很好用,想找个类似的工具只能找到可是的太老,居然很多都不支持代码也不多,就干脆自己造轮子了感觉效果还行。

npm 的 scripts 下写的命令太多就很容易很乱,各种第三方轮子都只能解决一部分问题,总感觉不是很好用,想找个类似 make 的工具只能找到 jake, 可是 jake 的 API 太老,居然很多都不支持 promise, 代码也不多,就干脆自己造轮子了, 感觉效果还行。

项目地址: https://github.com/zaaack/foy

特点:

基于 promise 的任务和内置工具函数(fs/shell), 无缝支持 async/await

类似于 shelljs 的跨平台 shell dsl, 人人都会写 shell

易学易用,无需为写仅仅几个 build 命令而花费几个小时去寻找和学习第三方包

很小的安装成本

foy:

gulp:

grunt:

无缝和第三方支持 promise 的工具包整合,不需要封装成插件就能用

使用:

安装

yarn add -D foy # or npm i -D foy

# Or Install globally with

yarn add -g foy # or npm i -g foy

在项目根目录下增加一个 Foyfile.js (或者 Foyfile.ts, 需要安装 ts-node)

import { task, desc, option, strict, fs } from "foy"


task("build", async ctx => {
  await ctx.exec("tsc")
})

desc("Build ts files with tsc")
option("-w, --watch", "watch file changes")
strict() // This will throw an error if you passed some options that doesn"t defined via `option()`
task("build2", async ctx => {
  await ctx.exec(`tsc ${ctx.options.watch ? "-w" : ""}`)
})

task("task", async ctx => {
  await fs.rmrf("/some/dir/or/file") // Remove directory or file
  await fs.copy("/src", "/dist") // Copy folder or file
  let json = await fs.readJson("./xx.json")
  await ctx.env("NODE_ENV", "production")
  await ctx.cd("./src")
  await ctx.exec("some command") // Execute an command
  let { stdout } = await ctx.exec("ls", { stdio: "pipe" }) // Get the stdout, default is empty because it"s redirected to current process via `stdio: "inherit"`.
})

然后就可以运行任务了

# 安装在本地 node_modules 目录下
npx foy build
npx foy build1
npx foy task 

# 安装在全局

foy build
foy build1

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99760.html

相关文章

  • 构建Vue-cli通用项目目录

    摘要:使用基于依赖追踪的观察并且使用异步队列更新。为项目配置文件。为项目静态资源目录。其实个人感觉通用项目目录可以很随意的搭配,比如说之后清空目录封装通用组件,像是啊,滑动常用组件。 写在前面的个人体会,大神们可以跳过 这段时间接手一个后台管理项目,从最开始写一点我自己的体会吧。首先Vue,Angular和React是当今主流前端三大框架。Vue是一个用来构建网页的JS库,相比较Angula...

    Winer 评论0 收藏0
  • 全栈开发自学路线

    摘要:前言这里筑梦师是一名正在努力学习的开发工程师目前致力于全栈方向的学习希望可以和大家一起交流技术共同进步用简书记录下自己的学习历程个人学习方法分享本文目录更新说明目录学习方法学习态度全栈开发学习路线很长知识拓展很长在这里收取很多人的建议以后决 前言 这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程...

    galaxy_robot 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<