node自动化构建(三)--实践

358 阅读1分钟

这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战

其实掌握前面两个模块已经基本上算是没啥问题了,下面再聊点其他实用的东西吧

1. chalk

chalk主要用于修改控制台中字符串的样式。比如根据当前状态展示不同颜色的字体,成功就用绿色,失败用红色,让你的信息展示更加优美

console.log(chalk.green('>>>>  开始打包  <<<<'));

2.util

util也是node的一个核心模块,提供常用函数的集合,用于弥补核心 JavaScript 的功能 过于精简的不足。

  • util.format 快速格式化字符串
util.format('%s=%s','a','b','c')  //a=b c
  • util.inherits 实现对象原型继承
util.inherits(setName,sayName); //setName继承sayName
  • util.promisify 快捷的把原来的异步回调方法改成返回 Promise 实例的方法
const exec = util.promisify(child_process.exec);

等等

3.fs

在 NodeJS 中,所有与文件操作都是通过 fs 核心模块来实现的,包括文件目录的创建、删除、查询以及文件的读取和写入,在 fs 模块中,所有的方法都分为同步和异步两种实现,具有 sync 后缀的方法为同步方法,不具有 sync 后缀的方法为异步方法。通过这些甚至可以在打包时实现一些自定义的方法。给文件写入统一信息、注释等等

文件读取:readFileSync、readFile
文件写入: writeFileSync、writeFile
拷贝写入: copyFileSync、copyFile
创建文件:mkdirSync、mkdir
删除目录:rmdirSync、rmdir
删除文件:unlinkSync、unlink
...

4.semver

用以解决在大型项目中对依赖的版本失去控制的问题,通过自动获取当前package.json里的版本号,并通过semver提供的多个方法生成自己需要的版本号,并通过fs重新写入项目,实现版本号的自动化更新

const semverInc = require('semver/functions/inc');
const pkg = require('../package.json');
const version = pkg.version || '1.2.3'
const getNextVersions = () => ({
    major: semverInc(version, 'major'),  //2.0.0
    minor: semverInc(version, 'minor'),  //1.3.0
    patch: semverInc(version, 'patch'),  //1.2.4
    premajor: semverInc(version, 'premajor'),  //2.0.0-0
    preminor: semverInc(version, 'preminor'),  //1.3.0-0
    prepatch: semverInc(version, 'prepatch'),  //1.2.4-0
    prerelease: semverInc(version, 'prerelease')  //1.2.3-1
});