copy-folder-util 1.1.5 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -54,7 +54,7 @@ Command-line flags:
54
54
  | `--quiet` | Suppress informational messages. | N/A |
55
55
  | `--summary` | Only print out the single line summary message. | N/A |
56
56
 
57
- Examples:
57
+ ### 4. Examples
58
58
  - `copy-folder build --basename=index dist` <br>
59
59
  Only copies files with filenames matching `index.*`.
60
60
 
@@ -81,7 +81,7 @@ import { copyFolder } from 'copy-folder-util';
81
81
 
82
82
  const options = { fileExtensions: ['.html', '.js'] };
83
83
  const results = copyFolder.cp('src/web', 'docs/api-manual', options);
84
- console.log('Number of files copied:', results.count);
84
+ console.info('Number of files copied:', results.count);
85
85
  ```
86
86
 
87
87
  See the **TypeScript Declarations** at the top of [copy-folder.ts](src/copy-folder.ts) for documentation.
package/bin/cli.js CHANGED
@@ -24,7 +24,7 @@
24
24
  import { cliArgvUtil } from 'cli-argv-util';
25
25
  import { copyFolder } from '../dist/copy-folder.js';
26
26
 
27
- // Parameters and flags
27
+ // Parameters and Flags
28
28
  const validFlags = ['cd', 'ext', 'note', 'quiet', 'summary'];
29
29
  const cli = cliArgvUtil.parse(validFlags);
30
30
  const source = cli.params[0];
@@ -32,10 +32,10 @@ const target = cli.params[1];
32
32
 
33
33
  // Copy Folder
34
34
  const error =
35
- cli.invalidFlag ? cli.invalidFlagMsg :
36
- !source ? 'Missing source folder.' :
37
- !target ? 'Missing target folder.' :
38
- cli.paramsCount > 2 ? 'Extraneous parameter: ' + cli.params[2] :
35
+ cli.invalidFlag ? cli.invalidFlagMsg :
36
+ !source ? 'Missing source folder.' :
37
+ !target ? 'Missing target folder.' :
38
+ cli.paramCount > 2 ? 'Extraneous parameter: ' + cli.params[2] :
39
39
  null;
40
40
  if (error)
41
41
  throw new Error('[copy-folder-util] ' + error);
@@ -1,8 +1,8 @@
1
- //! copy-folder-util v1.1.5 ~~ https://github.com/center-key/copy-folder-util ~~ MIT License
1
+ //! copy-folder-util v1.1.7 ~~ https://github.com/center-key/copy-folder-util ~~ MIT License
2
2
 
3
3
  export type Settings = {
4
- basename: string;
5
- cd: string;
4
+ basename: string | null;
5
+ cd: string | null;
6
6
  fileExtensions: string[];
7
7
  };
8
8
  export type Results = {
@@ -19,6 +19,11 @@ export type ReporterSettings = {
19
19
  summaryOnly: boolean;
20
20
  };
21
21
  declare const copyFolder: {
22
+ extraneous: {
23
+ files: string[];
24
+ folders: string[];
25
+ };
26
+ assert(ok: unknown, message: string | null): void;
22
27
  cp(sourceFolder: string, targetFolder: string, options?: Partial<Settings>): Results;
23
28
  reporter(results: Results, options?: Partial<ReporterSettings>): Results;
24
29
  };
@@ -1,13 +1,19 @@
1
- //! copy-folder-util v1.1.5 ~~ https://github.com/center-key/copy-folder-util ~~ MIT License
1
+ //! copy-folder-util v1.1.7 ~~ https://github.com/center-key/copy-folder-util ~~ MIT License
2
2
 
3
3
  import chalk from 'chalk';
4
4
  import fs from 'fs';
5
5
  import log from 'fancy-log';
6
6
  import path from 'path';
7
7
  import slash from 'slash';
8
- const extraneousFiles = ['.DS_Store', 'Thumbs.db', 'desktop.ini'];
9
- const extraneousFolders = ['.git', 'node_modules'];
10
8
  const copyFolder = {
9
+ extraneous: {
10
+ files: ['.DS_Store', 'Thumbs.db', 'desktop.ini'],
11
+ folders: ['.git', 'node_modules'],
12
+ },
13
+ assert(ok, message) {
14
+ if (!ok)
15
+ throw new Error(`[copy-folder-util] ${message}`);
16
+ },
11
17
  cp(sourceFolder, targetFolder, options) {
12
18
  const defaults = {
13
19
  basename: null,
@@ -16,21 +22,20 @@ const copyFolder = {
16
22
  };
17
23
  const settings = { ...defaults, ...options };
18
24
  const startTime = Date.now();
19
- const normalize = (folder) => !folder ? '' : slash(path.normalize(folder)).replace(/\/$/, '');
20
- const startFolder = settings.cd ? normalize(settings.cd) + '/' : '';
21
- const source = normalize(startFolder + sourceFolder);
22
- const target = normalize(startFolder + targetFolder);
25
+ const cleanPath = (folder) => !folder ? '' : slash(path.normalize(folder)).replace(/\/$/, '');
26
+ const startFolder = settings.cd ? cleanPath(settings.cd) + '/' : '';
27
+ const source = cleanPath(startFolder + sourceFolder);
28
+ const target = cleanPath(startFolder + targetFolder);
23
29
  if (targetFolder)
24
30
  fs.mkdirSync(target, { recursive: true });
25
- const errorMessage = !sourceFolder ? 'Must specify the source folder path.' :
31
+ const error = !sourceFolder ? 'Must specify the source folder path.' :
26
32
  !targetFolder ? 'Must specify the target folder path.' :
27
33
  !fs.existsSync(source) ? 'Source folder does not exist: ' + source :
28
34
  !fs.existsSync(target) ? 'Target folder cannot be created: ' + target :
29
35
  !fs.statSync(source).isDirectory() ? 'Source is not a folder: ' + source :
30
36
  !fs.statSync(target).isDirectory() ? 'Target is not a folder: ' + target :
31
37
  null;
32
- if (errorMessage)
33
- throw new Error('[copy-folder-util] ' + errorMessage);
38
+ copyFolder.assert(!error, error);
34
39
  const filterOff = {
35
40
  base: !settings.basename,
36
41
  ext: !Array.isArray(settings.fileExtensions) || !settings.fileExtensions.length,
@@ -42,11 +47,11 @@ const copyFolder = {
42
47
  const isFile = fs.statSync(origin).isFile();
43
48
  const name = path.basename(origin);
44
49
  const ext = path.extname(origin);
45
- const keepFolder = !isFile && !extraneousFolders.includes(name);
50
+ const keepFolder = !isFile && !copyFolder.extraneous.folders.includes(name);
46
51
  const keepFile = isFile &&
47
52
  (filterOff.base || name.replace(/[.].*/, '') === settings.basename) &&
48
53
  (filterOff.ext || settings.fileExtensions.includes(ext)) &&
49
- !extraneousFiles.includes(name);
54
+ !copyFolder.extraneous.files.includes(name);
50
55
  if (keepFile)
51
56
  files.push({
52
57
  origin: relativePath(posixPath(origin), source),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "copy-folder-util",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "Recursively copy files from one folder to another folder (CLI tool designed for use in npm package.json scripts)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "runScriptsConfig": {
47
47
  "clean": [
48
- "rimraf build dist spec/fixtures/target"
48
+ "rimraf build dist spec/target"
49
49
  ],
50
50
  "lint": [
51
51
  "jshint . --exclude-path .gitignore",
@@ -61,24 +61,24 @@
61
61
  "test": "mocha spec/*.spec.js"
62
62
  },
63
63
  "dependencies": {
64
- "chalk": "~5.4",
65
- "cli-argv-util": "~1.2",
64
+ "chalk": "~5.6",
65
+ "cli-argv-util": "~1.3",
66
66
  "fancy-log": "~2.0",
67
67
  "slash": "~5.1"
68
68
  },
69
69
  "devDependencies": {
70
- "@eslint/js": "~9.21",
70
+ "@eslint/js": "~9.39",
71
71
  "@types/fancy-log": "~2.0",
72
- "@types/node": "~22.13",
73
- "add-dist-header": "~1.4",
72
+ "@types/node": "~24.10",
73
+ "add-dist-header": "~1.6",
74
74
  "assert-deep-strict-equal": "~1.2",
75
- "copy-file-util": "~1.2",
76
- "eslint": "~9.21",
75
+ "copy-file-util": "~1.3",
76
+ "eslint": "~9.39",
77
77
  "jshint": "~2.13",
78
- "mocha": "~11.1",
79
- "rimraf": "~6.0",
78
+ "mocha": "~11.7",
79
+ "rimraf": "~6.1",
80
80
  "run-scripts-util": "~1.3",
81
- "typescript": "~5.8",
82
- "typescript-eslint": "~8.26"
81
+ "typescript": "~5.9",
82
+ "typescript-eslint": "~8.46"
83
83
  }
84
84
  }