1- /* eslint-disable no-await-in-loop, no-console, no-restricted-syntax */
21import path from 'path'
3- import fsJet from 'fs-jetpack '
2+ import fs from 'fs-extra '
43import isObject from 'is-plain-object'
54import globby from 'globby'
65import { bold , green , yellow } from 'colorette'
76
87import { ensureTrailingNewLine , stringify } from './utils'
98
109async function isFile ( filePath ) {
11- const fileStats = await fsJet . inspectAsync ( filePath )
10+ const fileStats = await fs . stat ( filePath )
1211
13- return fileStats . type === 'file'
12+ return fileStats . isFile ( )
1413}
1514
1615function renameTarget ( target , rename ) {
@@ -42,7 +41,7 @@ async function generateCopyTarget(src, dest, file, { flatten, rename, transform
4241 }
4342 let contents
4443 if ( file || transform ) {
45- contents = await fsJet . readAsync ( src )
44+ contents = await fs . readFile ( src , 'utf-8' )
4645 if ( transform ) {
4746 contents = await transform ( contents )
4847 }
@@ -112,7 +111,8 @@ export default function copy(options = {}) {
112111 const copyTargets = [ ]
113112
114113 if ( Array . isArray ( targets ) && targets . length ) {
115- for ( const target of targets ) {
114+ for ( let index = 0 ; index < targets . length ; index += 1 ) {
115+ const target = targets [ index ]
116116 if ( ! isObject ( target ) ) {
117117 throw new Error ( `${ stringify ( target ) } target must be an object` )
118118 }
@@ -147,15 +147,16 @@ export default function copy(options = {}) {
147147 } )
148148 )
149149 )
150- copyTargets . push ( ...targetsList . flat ( 1 ) )
150+ targetsList . forEach ( ( ts ) => {
151+ copyTargets . push ( ...ts )
152+ } )
151153 } else {
152- copyTargets . push (
153- ...( await generateCopyTargets ( matchedPaths , dest , file , {
154- flatten,
155- rename,
156- transform
157- } ) )
158- )
154+ const ts = await generateCopyTargets ( matchedPaths , dest , file , {
155+ flatten,
156+ rename,
157+ transform
158+ } )
159+ copyTargets . push ( ...ts )
159160 }
160161 }
161162 }
@@ -166,15 +167,16 @@ export default function copy(options = {}) {
166167 console . log ( green ( 'copied:' ) )
167168 }
168169
169- for ( const copyTarget of copyTargets ) {
170+ for ( let index = 0 ; index < copyTargets . length ; index += 1 ) {
171+ const copyTarget = copyTargets [ index ]
170172 const { src, contents, transformed, merge, merged, dest } = copyTarget
171173
172- if ( transformed || merged ) {
173- if ( merge || transformed ) {
174- await fsJet . writeAsync ( dest , contents , restPluginOptions )
175- }
174+ if ( transformed ) {
175+ await fs . outputFile ( dest , contents )
176+ } else if ( merged ) {
177+ if ( merge ) await fs . outputFile ( dest , contents )
176178 } else {
177- await fsJet . copyAsync ( src , dest , { overwrite : true , ... restPluginOptions } )
179+ await fs . copy ( src , dest , restPluginOptions )
178180 }
179181
180182 if ( verbose ) {
0 commit comments