copy-folder-util 0.2.5 → 1.1.0
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 +12 -4
- package/dist/copy-folder.d.ts +1 -1
- package/dist/copy-folder.js +1 -1
- package/package.json +19 -20
- package/dist/copy-folder.umd.cjs +0 -81
package/README.md
CHANGED
|
@@ -57,10 +57,17 @@ Command-line flags:
|
|
|
57
57
|
| `--summary` | Only print out the single line summary message. | N/A |
|
|
58
58
|
|
|
59
59
|
Examples:
|
|
60
|
-
- `copy-folder build --basename=index dist`
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- `copy-folder
|
|
60
|
+
- `copy-folder build --basename=index dist` <br>
|
|
61
|
+
Only copy files with filenames matching `index.*`.
|
|
62
|
+
|
|
63
|
+
- `copy-folder -cd=spec fixtures mock1`<br>
|
|
64
|
+
Copy the folder **spec/fixtures** to **spec/mock1**.
|
|
65
|
+
|
|
66
|
+
- `copy-folder build dist --summary`<br>
|
|
67
|
+
Displays the summary but not the individual files copied.
|
|
68
|
+
|
|
69
|
+
- `copy-folder src/web --ext=.js,.html docs`<br>
|
|
70
|
+
Copy only the JavaScript and HTML files to the **docs** folder.
|
|
64
71
|
|
|
65
72
|
## C) Application Code
|
|
66
73
|
Even though **copy-folder-util** is primarily intended for build scripts, the package can easily be used programmatically in ESM and TypeScript projects.
|
|
@@ -68,6 +75,7 @@ Even though **copy-folder-util** is primarily intended for build scripts, the pa
|
|
|
68
75
|
Example:
|
|
69
76
|
``` typescript
|
|
70
77
|
import { copyFolder } from 'copy-folder-util';
|
|
78
|
+
|
|
71
79
|
const options = { fileExtensions: ['.html', '.js'] };
|
|
72
80
|
const results = copyFolder.cp('src/web', 'docs/api-manual', options);
|
|
73
81
|
console.log('Number of files copied:', results.count);
|
package/dist/copy-folder.d.ts
CHANGED
package/dist/copy-folder.js
CHANGED
package/package.json
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "copy-folder-util",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Recursively copy files from one folder to another folder (CLI tool designed for use in npm scripts)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"module": "dist/copy-folder.js",
|
|
8
|
-
"main": "dist/copy-folder.
|
|
8
|
+
"main": "dist/copy-folder.js",
|
|
9
9
|
"types": "dist/copy-folder.d.ts",
|
|
10
10
|
"files": [
|
|
11
11
|
"dist"
|
|
12
12
|
],
|
|
13
13
|
"exports": {
|
|
14
14
|
".": {
|
|
15
|
-
"import": "./dist/copy-folder.js"
|
|
16
|
-
"require": "./dist/copy-folder.umd.cjs"
|
|
15
|
+
"import": "./dist/copy-folder.js"
|
|
17
16
|
},
|
|
18
17
|
"./": "./dist/"
|
|
19
18
|
},
|
|
@@ -67,40 +66,40 @@
|
|
|
67
66
|
}
|
|
68
67
|
},
|
|
69
68
|
"runScriptsConfig": {
|
|
69
|
+
"clean": [
|
|
70
|
+
"rimraf build dist spec/fixtures/target"
|
|
71
|
+
],
|
|
70
72
|
"build": [
|
|
71
|
-
"rimraf build dist spec/fixtures/target **/.DS_Store",
|
|
72
73
|
"jshint . --exclude-path .gitignore",
|
|
73
74
|
"eslint --max-warnings 0 . --ext .ts",
|
|
74
75
|
"tsc",
|
|
75
|
-
"tsc --module UMD --outDir build/umd",
|
|
76
|
-
"copy-file build/umd/copy-folder.js build/copy-folder.umd.cjs",
|
|
77
76
|
"add-dist-header build dist"
|
|
78
77
|
]
|
|
79
78
|
},
|
|
80
79
|
"scripts": {
|
|
81
|
-
"pretest": "run-scripts build",
|
|
80
|
+
"pretest": "run-scripts clean build",
|
|
82
81
|
"test": "mocha spec/*.spec.js"
|
|
83
82
|
},
|
|
84
83
|
"dependencies": {
|
|
85
84
|
"chalk": "~5.2",
|
|
86
|
-
"cli-argv-util": "~0
|
|
85
|
+
"cli-argv-util": "~1.0",
|
|
87
86
|
"fancy-log": "~2.0",
|
|
88
|
-
"slash": "~5.
|
|
87
|
+
"slash": "~5.1"
|
|
89
88
|
},
|
|
90
89
|
"devDependencies": {
|
|
91
90
|
"@types/fancy-log": "~2.0",
|
|
92
|
-
"@types/node": "~
|
|
93
|
-
"@typescript-eslint/eslint-plugin": "~5.
|
|
94
|
-
"@typescript-eslint/parser": "~5.
|
|
95
|
-
"add-dist-header": "~0
|
|
91
|
+
"@types/node": "~20.3",
|
|
92
|
+
"@typescript-eslint/eslint-plugin": "~5.60",
|
|
93
|
+
"@typescript-eslint/parser": "~5.60",
|
|
94
|
+
"add-dist-header": "~1.0",
|
|
96
95
|
"assert-deep-strict-equal": "~1.0",
|
|
97
|
-
"copy-file-util": "~
|
|
98
|
-
"eslint": "~8.
|
|
96
|
+
"copy-file-util": "~1.1",
|
|
97
|
+
"eslint": "~8.43",
|
|
99
98
|
"jshint": "~2.13",
|
|
100
99
|
"mocha": "~10.2",
|
|
101
|
-
"rev-web-assets": "~
|
|
102
|
-
"rimraf": "~
|
|
103
|
-
"run-scripts-util": "~
|
|
104
|
-
"typescript": "~
|
|
100
|
+
"rev-web-assets": "~1.1",
|
|
101
|
+
"rimraf": "~5.0",
|
|
102
|
+
"run-scripts-util": "~1.1",
|
|
103
|
+
"typescript": "~5.1"
|
|
105
104
|
}
|
|
106
105
|
}
|
package/dist/copy-folder.umd.cjs
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
//! copy-folder-util v0.2.5 ~~ https://github.com/center-key/copy-folder-util ~~ MIT License
|
|
2
|
-
|
|
3
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
-
};
|
|
6
|
-
(function (factory) {
|
|
7
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
8
|
-
var v = factory(require, exports);
|
|
9
|
-
if (v !== undefined) module.exports = v;
|
|
10
|
-
}
|
|
11
|
-
else if (typeof define === "function" && define.amd) {
|
|
12
|
-
define(["require", "exports", "fs", "path", "slash"], factory);
|
|
13
|
-
}
|
|
14
|
-
})(function (require, exports) {
|
|
15
|
-
"use strict";
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.copyFolder = void 0;
|
|
18
|
-
const fs_1 = __importDefault(require("fs"));
|
|
19
|
-
const path_1 = __importDefault(require("path"));
|
|
20
|
-
const slash_1 = __importDefault(require("slash"));
|
|
21
|
-
const extraneousFiles = ['.DS_Store', 'Thumbs.db', 'desktop.ini'];
|
|
22
|
-
const extraneousFolders = ['.git', 'node_modules'];
|
|
23
|
-
const copyFolder = {
|
|
24
|
-
cp(sourceFolder, targetFolder, options) {
|
|
25
|
-
const defaults = {
|
|
26
|
-
basename: null,
|
|
27
|
-
cd: null,
|
|
28
|
-
fileExtensions: [],
|
|
29
|
-
};
|
|
30
|
-
const settings = Object.assign(Object.assign({}, defaults), options);
|
|
31
|
-
const startTime = Date.now();
|
|
32
|
-
const normalize = (folder) => !folder ? '' : (0, slash_1.default)(path_1.default.normalize(folder)).replace(/\/$/, '');
|
|
33
|
-
const startFolder = settings.cd ? normalize(settings.cd) + '/' : '';
|
|
34
|
-
const source = normalize(startFolder + sourceFolder);
|
|
35
|
-
const target = normalize(startFolder + targetFolder);
|
|
36
|
-
if (targetFolder)
|
|
37
|
-
fs_1.default.mkdirSync(target, { recursive: true });
|
|
38
|
-
const errorMessage = !sourceFolder ? 'Must specify the source folder path.' :
|
|
39
|
-
!targetFolder ? 'Must specify the target folder path.' :
|
|
40
|
-
!fs_1.default.existsSync(source) ? 'Source folder does not exist: ' + source :
|
|
41
|
-
!fs_1.default.existsSync(target) ? 'Target folder cannot be created: ' + target :
|
|
42
|
-
!fs_1.default.statSync(source).isDirectory() ? 'Source is not a folder: ' + source :
|
|
43
|
-
!fs_1.default.statSync(target).isDirectory() ? 'Target is not a folder: ' + target :
|
|
44
|
-
null;
|
|
45
|
-
if (errorMessage)
|
|
46
|
-
throw Error('[copy-folder-util] ' + errorMessage);
|
|
47
|
-
const filterOff = {
|
|
48
|
-
base: !settings.basename,
|
|
49
|
-
ext: !settings.fileExtensions || settings.fileExtensions.length === 0,
|
|
50
|
-
};
|
|
51
|
-
const files = [];
|
|
52
|
-
const posixPath = (nativePath) => (0, slash_1.default)(nativePath.replace(/.*:/, ''));
|
|
53
|
-
const relativePath = (fullPath, start) => fullPath.substring(fullPath.indexOf(start) + start.length + 1);
|
|
54
|
-
const filter = (origin, dest) => {
|
|
55
|
-
const isFile = fs_1.default.statSync(origin).isFile();
|
|
56
|
-
const name = path_1.default.basename(origin);
|
|
57
|
-
const ext = path_1.default.extname(origin);
|
|
58
|
-
const keepFolder = !isFile && !extraneousFolders.includes(name);
|
|
59
|
-
const keepFile = isFile &&
|
|
60
|
-
(filterOff.base || name.replace(/[.].*/, '') === settings.basename) &&
|
|
61
|
-
(filterOff.ext || settings.fileExtensions.includes(ext)) &&
|
|
62
|
-
!extraneousFiles.includes(name);
|
|
63
|
-
if (keepFile)
|
|
64
|
-
files.push({
|
|
65
|
-
origin: relativePath(posixPath(origin), source),
|
|
66
|
-
dest: relativePath(posixPath(dest), target),
|
|
67
|
-
});
|
|
68
|
-
return keepFolder || keepFile;
|
|
69
|
-
};
|
|
70
|
-
fs_1.default.cpSync(source, target, { filter: filter, recursive: true });
|
|
71
|
-
return {
|
|
72
|
-
source: source,
|
|
73
|
-
target: target,
|
|
74
|
-
count: files.length,
|
|
75
|
-
duration: Date.now() - startTime,
|
|
76
|
-
files: files,
|
|
77
|
-
};
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
exports.copyFolder = copyFolder;
|
|
81
|
-
});
|