
- const fs = require('fs')
- const path = require('path')
- /**
- * @description: 获取完整的文件路径
- * @param {*} url 路径
- * @return {*} 返回完整的文件路径
- */
- const getPath = (url) => {
- return path.join(__dirname, url)
- }
- /**
- * @description: 获取参数
- * @return {*} target【目标文件夹】 source【源文件夹】
- */
- function parseArgv() {
- let arguments = process.argv.splice(2)
- const target = arguments[0] || './copy'
- const source = arguments[1] || './'
- return { target, source }
- }
- /**
- * @description: 是否是文件夹
- * @param {*} pathDir 路径
- * @return {*} true 是,false 否
- */
- const isDir = (pathDir) => {
- const path = getPath(pathDir)
- let data = false
- try {
- data = fs.statSync(path).isDirectory()
- return data
- } catch (error) {
- return data
- }
- }
- /**
- * @description: 获取文件夹列表
- * @param {*} pathDir 路径
- * @return {*} 文件列表
- */
- const getDirList = (pathDir) => {
- const path = getPath(pathDir)
- return new Promise((resolve, reject) => {
- fs.readdir(path, (err, data) => {
- if (err) {
- rejects(err)
- }
- resolve(data)
- })
- })
- }
- const exclude = ['node_modules', '.gitignore']
- const main = async (target, source) => {
- let list = await getDirList(source)
- const except = [path.basename(target), path.parse(__filename).base]
- list = list.filter((item) => {
- return !except.includes(item)
- })
- isDir(target) ? '' : fs.mkdirSync(target, { recursive: true })
- const copyFile = (list, target, source) => {
- const result = list.filter((item) => {
- return !exclude.includes(item)
- })
- result.forEach(async (item) => {
- const path =
- source.endsWith('./') || source.endsWith('/')
- ? './' + item
- : source + '/' + item // 原始路径
- const copyPath = target + '/' + item //复制的路径
- if (isDir(path)) {
- if (!fs.existsSync(copyPath)) {
- await fs.mkdirSync(copyPath)
- console.log(
- `正在复制:文件夹从${getPath(path)}------->复制到${getPath(
- copyPath
- )} ======成功`
- )
- }
- let needCopyList = await getDirList(path)
- await copyFile(needCopyList, copyPath, path)
- } else {
- if (!fs.existsSync(copyPath)) {
- fs.copyFileSync(path, copyPath)
- console.log(
- `正在复制:文件从${getPath(path)}------->复制到${getPath(
- copyPath
- )} ======成功`
- )
- }
- }
- })
- }
- copyFile(list, target, source)
- }
- const { target, source } = parseArgv()
- main(target, source)
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |