Skip to content

Commit 52324ff

Browse files
committed
refactor(scripts): simplofy copy
1 parent 1791426 commit 52324ff

File tree

1 file changed

+32
-17
lines changed

1 file changed

+32
-17
lines changed

scripts/copy.js

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
* **NOTE:**
55
* 👉 This file should not use any 3rd party dependency
66
*/
7-
const { writeFileSync, copyFileSync } = require('fs')
8-
const { resolve } = require('path')
7+
const { writeFileSync, copyFileSync, statSync } = require('fs')
8+
const { resolve, basename } = require('path')
99
const packageJson = require('../package.json')
1010

1111
main()
@@ -15,25 +15,40 @@ function main() {
1515
const distPath = resolve(projectRoot, 'dist')
1616
const distPackageJson = createDistPackageJson(packageJson)
1717

18-
copyFileSync(
19-
resolve(projectRoot, 'README.md'),
20-
resolve(distPath, 'README.md')
21-
)
22-
copyFileSync(
23-
resolve(projectRoot, 'CHANGELOG.md'),
24-
resolve(distPath, 'CHANGELOG.md')
25-
)
26-
copyFileSync(
27-
resolve(projectRoot, 'LICENSE.md'),
28-
resolve(distPath, 'LICENSE.md')
29-
)
30-
copyFileSync(
31-
resolve(projectRoot, '.npmignore'),
32-
resolve(distPath, '.npmignore')
18+
const cpFiles = ['README.md', 'CHANGELOG.md', 'LICENSE.md', '.npmignore'].map(
19+
(file) => resolve(projectRoot, file)
3320
)
21+
22+
cp(cpFiles, distPath)
23+
3424
writeFileSync(resolve(distPath, 'package.json'), distPackageJson)
3525
}
3626

27+
/**
28+
*
29+
* @param {string[]|string} source
30+
* @param {string} target
31+
*/
32+
function cp(source, target) {
33+
const isDir = statSync(target).isDirectory()
34+
35+
if (isDir) {
36+
if (!Array.isArray(source)) {
37+
throw new Error(
38+
'if <target> is directory you need to provide source as an array'
39+
)
40+
}
41+
42+
source.forEach((file) =>
43+
copyFileSync(file, resolve(target, basename(file)))
44+
)
45+
46+
return
47+
}
48+
49+
copyFileSync(/** @type {string} */ (source), target)
50+
}
51+
3752
/**
3853
* @param {typeof packageJson} packageConfig
3954
* @return {string}

0 commit comments

Comments
 (0)