UNPKG

wsemi

Version:

A support package for web developer.

110 lines (89 loc) 3.09 kB
import path from 'path' import fs from 'fs' import fsCreateFolder from './fsCreateFolder.mjs' /** * 後端nodejs複製資料夾 * * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/fsCopyFolder.test.mjs Github} * @memberOf wsemi * @param {String} fpSrc 輸入來源資料夾路徑字串 * @param {String} fpTar 輸入目的資料夾路徑字串 * @example * need test in nodejs. * * import fs from 'fs' * import fsCreateFolder from './src/fsCreateFolder.mjs' * import fsCleanFolder from './src/fsCleanFolder.mjs' * import fsDeleteFolder from './src/fsDeleteFolder.mjs' * import fsCopyFolder from './src/fsCopyFolder.mjs' * * console.log('fsCreateFolder', fsCreateFolder('./d/dd/ddd')) * * fs.writeFileSync('./d/a.txt', 'd-a', 'utf8') * fs.writeFileSync('./d/dd/b.txt', 'd-b', 'utf8') * fs.writeFileSync('./d/dd/ddd/c.txt', 'd-c', 'utf8') * * console.log('fsCleanFolder', fsCleanFolder('./d')) * * console.log('fsCreateFolder 1', fsCreateFolder('./d/ee/eee')) * * fs.writeFileSync('./d/a.txt', 'e-a', 'utf8') * fs.writeFileSync('./d/ee/b.txt', 'e-b', 'utf8') * fs.writeFileSync('./d/ee/eee/c.txt', 'e-c', 'utf8') * * console.log('fsDeleteFolder', fsDeleteFolder('./d')) * * console.log('fsCreateFolder 2', fsCreateFolder('./d/ff/fff')) * * fs.writeFileSync('./d/a.txt', 'f-a', 'utf8') * fs.writeFileSync('./d/ff/b.txt', 'f-b', 'utf8') * fs.writeFileSync('./d/ff/fff/c.txt', 'f-c', 'utf8') * * console.log('fsCopyFolder', fsCopyFolder('./d', './e')) * * // fsCreateFolder { success: 'done: ./d/dd/ddd' } * // fsCleanFolder { success: 'done: ./d' } * // fsCreateFolder 1 { success: 'done: ./d/ee/eee' } * // fsDeleteFolder { success: 'done: ./d' } * // fsCreateFolder 2 { success: 'done: ./d/ff/fff' } * // fsCopyFolder { success: 'done: ./e' } */ function fsCopyFolder(fpSrc, fpTar) { //複製資料夾 try { fs.readdirSync(fpSrc).forEach(function(file) { //fpSrcTemp, fpTarTemp let fpSrcTemp = fpSrc + '/' + file let fpTarTemp = fpTar + '/' + file //current let current = fs.lstatSync(fpSrcTemp) //proc if (current.isDirectory()) { //fsCreateFolder fsCreateFolder(path.dirname(fpTarTemp)) //fsCopyFolder fsCopyFolder(fpSrcTemp, fpTarTemp) } else if (current.isSymbolicLink()) { //symlinkSync let symlink = fs.readlinkSync(fpSrcTemp) fs.symlinkSync(symlink, fpTarTemp) } else { //fsCreateFolder fsCreateFolder(path.dirname(fpTarTemp)) //copyFileSync fs.copyFileSync(fpSrcTemp, fpTarTemp) } }) } catch (err) { return { error: err } } return { success: 'done: ' + fpTar } } export default fsCopyFolder