node.js 第三方库开发过程中 文件实时同步功能

先了解如下三方库

Concurrently : 同时执行多个命令
https://www.npmjs.com/package/concurrently

node.js 第三方库开发过程中 文件实时同步功能_第1张图片
image.png

fs-extra : 文件操作库
https://www.npmjs.com/package/fs-extra

node.js 第三方库开发过程中 文件实时同步功能_第2张图片
image.png

minimatch 用来模式匹配字符串的库。
https://www.npmjs.com/package/minimatch

node.js 第三方库开发过程中 文件实时同步功能_第3张图片
image.png

node-watch 监听目录下的文件变化

https://www.npmjs.com/package/node-watch

node.js 第三方库开发过程中 文件实时同步功能_第4张图片
image.png

rimraf 强制删除文件的库
https://www.npmjs.com/package/rimraf

node.js 第三方库开发过程中 文件实时同步功能_第5张图片
image.png

根据以上三方可以在实现如下的 js文件 帮助我们在开发三方库中的 实现 文件监听复制功能

const path = require('path')
const fs = require('fs-extra')
const watch = require('node-watch')
const rimraf = require('rimraf')
const minimatch = require('minimatch')

function copyAndWatch (source, destination, fileGlob) {
  console.log(`Cleaning "${destination}"`)
  rimraf(destination, () => {
    console.log(`Copying "${source}" to "${destination}"`)
    fs.copy(source, destination, (err) => {
      if (err) console.error(err)
    })

    console.log(`Watching "${source}"`)
    watch(source, (filename) => {
      const localPath = filename.split(source).pop()
      if (matchesFile(localPath, fileGlob)) {
        const destinationPath = `${destination}${localPath}`
        console.log(`Copying "${filename}" to "${destinationPath}"`)
        fs.copy(filename, destinationPath, (err) => {
          if (err) console.error(err)
        })
      }
    })
  })
}

function matchesFile (filename, fileGlob) {
  if (fileGlob == null) return true
  return minimatch(path.basename(filename), fileGlob)
}

copyAndWatch(
  '../trade_ui/src',
  'src/temp/trade_ui'
)

js第三方库开发流程

我们开发第三方的时候,如何在开发过程中测试我们开发的内容?

首先三方库的核心功能假定为src ,我们在开发这个库过程中(其实就是开发src),库本身是跑不起来的

这是需要一个临时工程 来承载 库的核心功能的。这期间的核心问题是如何同步src里面的代码。最简单的是,我们在临时工程里面开发完毕,将src 复制

出来到 三方库作为核心代码。但不能实时同步,此时就可以用上述的文件解决这个问题。

你可能感兴趣的:(node.js 第三方库开发过程中 文件实时同步功能)