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' )
99const packageJson = require ( '../package.json' )
1010
1111main ( )
@@ -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