simple-scaffold 1.0.4 → 1.1.0-alpha.3
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 +122 -36
- package/package.json +15 -4
- package/scaffold.js +6 -3
- package/scaffold.js.map +1 -1
- package/types.d.ts +18 -2
- package/utils.d.ts +10 -4
- package/utils.js +41 -13
- package/utils.js.map +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Simple Scaffold
|
|
2
2
|
|
|
3
3
|
Simple Scaffold allows you to generate any set of files in the easiest way possible with simple commands.
|
|
4
4
|
|
|
@@ -9,6 +9,38 @@ Simply organize your commonly-created files in their original structure, and run
|
|
|
9
9
|
will copy the files to the output path, while replacing values (such as component or app name, or
|
|
10
10
|
other custom data) inside the paths or contents of the files using Handlebars.js syntax.
|
|
11
11
|
|
|
12
|
+
<br />
|
|
13
|
+
|
|
14
|
+
<details>
|
|
15
|
+
<summary>Table of contents</summary>
|
|
16
|
+
|
|
17
|
+
- [Simple Scaffold](#simple-scaffold)
|
|
18
|
+
- [Install](#install)
|
|
19
|
+
- [Use as a command line tool](#use-as-a-command-line-tool)
|
|
20
|
+
- [Command Line Options](#command-line-options)
|
|
21
|
+
- [Use in Node.js](#use-in-nodejs)
|
|
22
|
+
- [Node-specific options](#node-specific-options)
|
|
23
|
+
- [Preparing files](#preparing-files)
|
|
24
|
+
- [Template files](#template-files)
|
|
25
|
+
- [Variable/token replacement](#variabletoken-replacement)
|
|
26
|
+
- [Built-in Helpers](#built-in-helpers)
|
|
27
|
+
- [Capitalization Helpers](#capitalization-helpers)
|
|
28
|
+
- [Date helpers](#date-helpers)
|
|
29
|
+
- [Custom Helpers](#custom-helpers)
|
|
30
|
+
- [Examples](#examples)
|
|
31
|
+
- [Command Example](#command-example)
|
|
32
|
+
- [Example Scaffold Input](#example-scaffold-input)
|
|
33
|
+
- [Input Directory structure](#input-directory-structure)
|
|
34
|
+
- [Contents of `project/scaffold/{{Name}}.jsx`](#contents-of-projectscaffoldnamejsx)
|
|
35
|
+
- [Example Scaffold Output](#example-scaffold-output)
|
|
36
|
+
- [Output directory structure](#output-directory-structure)
|
|
37
|
+
- [Contents of `project/scaffold/MyComponent/MyComponent.jsx`](#contents-of-projectscaffoldmycomponentmycomponentjsx)
|
|
38
|
+
- [Contributing](#contributing)
|
|
39
|
+
|
|
40
|
+
</details>
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
12
44
|
## Install
|
|
13
45
|
|
|
14
46
|
You can either use it as a command line tool or import into your own code and run from there.
|
|
@@ -104,30 +136,23 @@ const config = {
|
|
|
104
136
|
},
|
|
105
137
|
helpers: {
|
|
106
138
|
twice: (text) => [text, text].join(" ")
|
|
107
|
-
}
|
|
139
|
+
},
|
|
140
|
+
beforeWrite: (content, rawContent, outputPath) => content.toString().toUpperCase()
|
|
108
141
|
}
|
|
109
142
|
|
|
110
143
|
const scaffold = Scaffold(config)
|
|
111
144
|
```
|
|
112
145
|
|
|
113
|
-
###
|
|
146
|
+
### Node-specific options
|
|
114
147
|
|
|
115
|
-
In addition to all the options available in the command line, there are some JS-specific
|
|
116
|
-
available:
|
|
148
|
+
In addition to all the options available in the command line, there are some Node/JS-specific
|
|
149
|
+
options available:
|
|
117
150
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
console.log({ fullPath, baseDir, baseName })
|
|
124
|
-
return path.resolve(baseDir, baseName)
|
|
125
|
-
}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
2. You may add custom `helpers` to your scaffolds. Helpers are simple `(string) => string` functions
|
|
129
|
-
that transform your `data` variables into other values. See [Helpers](#helpers) for the list of
|
|
130
|
-
default helpers, or add your own to be loaded into the template parser.
|
|
151
|
+
| Option | Type | Description |
|
|
152
|
+
| ------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
153
|
+
| `output` | | In addition to being passed the same as CLI, it may also be passed a function for each input file to output into a dynamic path: `{ output: (fullPath, baseDir, baseName) => path.resolve(baseDir, baseName) }` |
|
|
154
|
+
| `helpers` | `Record<string, (string) => string>` | Helpers are simple functions that transform your `data` variables into other values. See [Helpers](#helpers) for the list of default helpers, or add your own to be loaded into the template parser. |
|
|
155
|
+
| `beforeWrite` | `(content: Buffer, rawContent: Buffer, outputPath: string) => String \| Buffer \| undefined` | Supply this function to override the final output contents of each of your files. The return value of this function will replace the output content of the respective file, which you may discriminate (if needed) using the `outputPath` argument. |
|
|
131
156
|
|
|
132
157
|
## Preparing files
|
|
133
158
|
|
|
@@ -135,6 +160,22 @@ available:
|
|
|
135
160
|
|
|
136
161
|
Put your template files anywhere, and fill them with tokens for replacement.
|
|
137
162
|
|
|
163
|
+
Each template (not file) in the config array is parsed individually, and copied to the output
|
|
164
|
+
directory. If a single template path contains multiple files (e.g. if you use a folder path or a
|
|
165
|
+
glob pattern), the first directory up the tree of that template will become the base inside the
|
|
166
|
+
defined output path for that template, while copying files recursively and maintaining their
|
|
167
|
+
relative structure.
|
|
168
|
+
|
|
169
|
+
Examples:
|
|
170
|
+
|
|
171
|
+
> In the following examples, the config `name` is `AppName`, and the config `output` is `src`.
|
|
172
|
+
|
|
173
|
+
| Input template | Output path(s) |
|
|
174
|
+
| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
|
|
175
|
+
| `./templates/{{ name }}.txt` | `src/AppName.txt` |
|
|
176
|
+
| `./templates/directory` <br /><br /> Directory contents:<br /> <ol><li>`outer/{{name}}.txt`</li></li><li>`outer2/inner/{{name.txt}}`</li></ol> | `src/outer/AppName.txt`,<br />`src/outer2/inner/AppName.txt` |
|
|
177
|
+
| `./templates/others/**/*.txt` <br /><br /> Directory contents:<br /> <ol><li>`outer/{{name}}.jpg`</li></li><li>`outer2/inner/{{name.txt}}`</li></ol> | `src/outer2/inner/AppName.txt` |
|
|
178
|
+
|
|
138
179
|
### Variable/token replacement
|
|
139
180
|
|
|
140
181
|
Scaffolding will replace `{{ varName }}` in both the file name and its contents and put the
|
|
@@ -146,7 +187,11 @@ The data available for the template parser is the data you pass to the `data` co
|
|
|
146
187
|
For example, using the following command:
|
|
147
188
|
|
|
148
189
|
```bash
|
|
149
|
-
npx simple-scaffold@latest
|
|
190
|
+
npx simple-scaffold@latest \
|
|
191
|
+
--templates templates/components/{{name}}.jsx \
|
|
192
|
+
--output src/components \
|
|
193
|
+
-create-sub-folder true \
|
|
194
|
+
MyComponent
|
|
150
195
|
```
|
|
151
196
|
|
|
152
197
|
Will output a file with the path:
|
|
@@ -165,30 +210,61 @@ Your `data` will be pre-populated with the following:
|
|
|
165
210
|
> Simple-Scaffold uses [Handlebars.js](https://handlebarsjs.com/) for outputting the file contents.
|
|
166
211
|
> Any `data` you add in the config will be available for use with their names wrapped in
|
|
167
212
|
> `{{` and `}}`. Other Handlebars built-ins such as `each`, `if` and `with` are also supported, see
|
|
168
|
-
> [Handlebars.js Language Features](https://handlebarsjs.com/guide/#language-features) for more
|
|
213
|
+
> [Handlebars.js Language Features](https://handlebarsjs.com/guide/#language-features) for more
|
|
214
|
+
> information.
|
|
169
215
|
|
|
170
|
-
|
|
216
|
+
### Built-in Helpers
|
|
171
217
|
|
|
172
218
|
Simple-Scaffold provides some built-in text transformation filters usable by handleBars.
|
|
173
219
|
|
|
174
220
|
For example, you may use `{{ snakeCase name }}` inside a template file or filename, and it will
|
|
175
221
|
replace `My Name` with `my_name` when producing the final value.
|
|
176
222
|
|
|
177
|
-
|
|
223
|
+
#### Capitalization Helpers
|
|
178
224
|
|
|
179
|
-
| Helper name
|
|
180
|
-
|
|
|
181
|
-
| [None]
|
|
182
|
-
| camelCase
|
|
183
|
-
| snakeCase
|
|
184
|
-
| startCase
|
|
185
|
-
| kebabCase
|
|
186
|
-
| hyphenCase
|
|
187
|
-
| pascalCase
|
|
188
|
-
| upperCase
|
|
189
|
-
| lowerCase
|
|
225
|
+
| Helper name | Example code | Example output |
|
|
226
|
+
| ------------ | ----------------------- | -------------- |
|
|
227
|
+
| [None] | `{{ name }}` | my name |
|
|
228
|
+
| `camelCase` | `{{ camelCase name }}` | myName |
|
|
229
|
+
| `snakeCase` | `{{ snakeCase name }}` | my_name |
|
|
230
|
+
| `startCase` | `{{ startCase name }}` | My Name |
|
|
231
|
+
| `kebabCase` | `{{ kebabCase name }}` | my-name |
|
|
232
|
+
| `hyphenCase` | `{{ hyphenCase name }}` | my-name |
|
|
233
|
+
| `pascalCase` | `{{ pascalCase name }}` | MyName |
|
|
234
|
+
| `upperCase` | `{{ upperCase name }}` | MY NAME |
|
|
235
|
+
| `lowerCase` | `{{ lowerCase name }}` | my name |
|
|
190
236
|
|
|
191
|
-
|
|
237
|
+
#### Date helpers
|
|
238
|
+
|
|
239
|
+
| Helper name | Description | Example code | Example output |
|
|
240
|
+
| -------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------- |
|
|
241
|
+
| `now` | Current date with format | `{{ now "yyyy-MM-dd HH:mm" }}` | 2042-01-01 15:00 |
|
|
242
|
+
| `now` (with offset) | Current date with format, and with offset | `{{ now "yyyy-MM-dd HH:mm" -1 "hours" }}` | 2042-01-01 14:00 |
|
|
243
|
+
| `date` | Custom date with format | `{{ date "2042-01-01T15:00:00Z" "yyyy-MM-dd HH:mm" }}` | 2042-01-01 15:00 |
|
|
244
|
+
| `date` (with offset) | Custom date with format, and with offset | `{{ date "2042-01-01T15:00:00Z" "yyyy-MM-dd HH:mm" -1 "days" }}` | 2041-31-12 15:00 |
|
|
245
|
+
| `date` (with date from `--data`) | Custom date with format, with data from the `data` config option | `{{ date myCustomDate "yyyy-MM-dd HH:mm" }}` | 2042-01-01 12:00 |
|
|
246
|
+
|
|
247
|
+
Further details:
|
|
248
|
+
|
|
249
|
+
- We use [`date-fns`](https://date-fns.org/docs/) for parsing/manipulating the dates.
|
|
250
|
+
If you want more information on the date tokens to use, refer to
|
|
251
|
+
[their format documentation](https://date-fns.org/docs/format).
|
|
252
|
+
|
|
253
|
+
- The date helper format takes the following arguments:
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
(
|
|
257
|
+
date: string,
|
|
258
|
+
format: string,
|
|
259
|
+
offsetAmount?: number,
|
|
260
|
+
offsetType?: "years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds"
|
|
261
|
+
)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
- **The now helper** (for current time) takes the same arguments, minus the first one (`date`) as
|
|
265
|
+
it is implicitly the current date.
|
|
266
|
+
|
|
267
|
+
### Custom Helpers
|
|
192
268
|
|
|
193
269
|
You may also add your own custom helpers using the `helpers` options when using the JS API (rather
|
|
194
270
|
than the CLI). The `helpers` option takes an object whose keys are helper names, and values are
|
|
@@ -200,8 +276,8 @@ config.helpers = {
|
|
|
200
276
|
}
|
|
201
277
|
```
|
|
202
278
|
|
|
203
|
-
|
|
204
|
-
`--sub-folder-name-helper` as a possible value.
|
|
279
|
+
All of the above helpers (built in and custom) will also be available to you when using
|
|
280
|
+
`subFolderNameHelper` (`--sub-folder-name-helper`/`-sh`) as a possible value.
|
|
205
281
|
|
|
206
282
|
## Examples
|
|
207
283
|
|
|
@@ -277,6 +353,16 @@ export default MyComponent: React.FC = (props) => {
|
|
|
277
353
|
|
|
278
354
|
## Contributing
|
|
279
355
|
|
|
356
|
+
I am developing this package on my free time, so any support, whether code, issues, or just stars
|
|
357
|
+
is very helpful to sustaining its life. If you would like to donate a bit to help keep the project
|
|
358
|
+
alive, I would be very thankful!
|
|
359
|
+
|
|
360
|
+
<a href='https://ko-fi.com/casraf' target='_blank'>
|
|
361
|
+
<img height='36' style='border:0px;height:36px;'
|
|
362
|
+
src='https://cdn.ko-fi.com/cdn/kofi1.png?v=3'
|
|
363
|
+
alt='Buy Me a Coffee at ko-fi.com' />
|
|
364
|
+
</a>
|
|
365
|
+
|
|
280
366
|
I welcome any issues or pull requests on GitHub. If you find a bug, or would like a new feature,
|
|
281
367
|
don't hesitate to open an appropriate issue and I will do my best to reply promptly.
|
|
282
368
|
|
package/package.json
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "simple-scaffold",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.1.0-alpha.3",
|
|
4
4
|
"description": "Create files based on templates",
|
|
5
5
|
"repository": "https://github.com/chenasraf/simple-scaffold.git",
|
|
6
6
|
"author": "Chen Asraf <inbox@casraf.com>",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"main": "index.js",
|
|
9
9
|
"bin": "cmd.js",
|
|
10
|
-
"keywords": [
|
|
10
|
+
"keywords": [
|
|
11
|
+
"javascript",
|
|
12
|
+
"cli",
|
|
13
|
+
"template",
|
|
14
|
+
"files",
|
|
15
|
+
"typescript",
|
|
16
|
+
"generator",
|
|
17
|
+
"scaffold",
|
|
18
|
+
"file",
|
|
19
|
+
"scaffolding"
|
|
20
|
+
],
|
|
11
21
|
"scripts": {
|
|
12
|
-
"clean": "
|
|
22
|
+
"clean": "rimraf dist/",
|
|
13
23
|
"build": "yarn clean && tsc && chmod -R +x ./dist && cp ./package.json ./README.md ./dist/",
|
|
14
24
|
"dev": "tsc --watch",
|
|
15
25
|
"start": "node dist/scaffold.js",
|
|
@@ -20,6 +30,7 @@
|
|
|
20
30
|
},
|
|
21
31
|
"dependencies": {
|
|
22
32
|
"chalk": "^4.1.2",
|
|
33
|
+
"date-fns": "^2.28.0",
|
|
23
34
|
"glob": "^7.1.3",
|
|
24
35
|
"handlebars": "^4.7.7",
|
|
25
36
|
"lodash": "^4.17.21",
|
|
@@ -27,7 +38,6 @@
|
|
|
27
38
|
"util.promisify": "^1.1.1"
|
|
28
39
|
},
|
|
29
40
|
"devDependencies": {
|
|
30
|
-
"@types/args": "^3.0.1",
|
|
31
41
|
"@types/glob": "^7.1.1",
|
|
32
42
|
"@types/jest": "^26.0.24",
|
|
33
43
|
"@types/lodash": "^4.14.171",
|
|
@@ -35,6 +45,7 @@
|
|
|
35
45
|
"@types/node": "^14.14.22",
|
|
36
46
|
"jest": "^27.0.6",
|
|
37
47
|
"mock-fs": "^5.0.0",
|
|
48
|
+
"rimraf": "^3.0.2",
|
|
38
49
|
"ts-jest": "^27.0.3",
|
|
39
50
|
"ts-node": "^10.1.0",
|
|
40
51
|
"typescript": "^4.3.5"
|
package/scaffold.js
CHANGED
|
@@ -65,7 +65,10 @@ async function Scaffold({ ...options }) {
|
|
|
65
65
|
isDirOrGlob,
|
|
66
66
|
isGlob,
|
|
67
67
|
});
|
|
68
|
-
await handleTemplateFile(options, options.data, {
|
|
68
|
+
await handleTemplateFile(options, options.data, {
|
|
69
|
+
templatePath: inputFilePath,
|
|
70
|
+
basePath,
|
|
71
|
+
});
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
74
|
catch (e) {
|
|
@@ -87,11 +90,11 @@ async function handleTemplateFile(options, data, { templatePath, basePath }) {
|
|
|
87
90
|
templatePath,
|
|
88
91
|
basePath,
|
|
89
92
|
});
|
|
90
|
-
const overwrite = utils_1.getOptionValueForFile(options, inputPath,
|
|
93
|
+
const overwrite = utils_1.getOptionValueForFile(options, inputPath, (_a = options.overwrite) !== null && _a !== void 0 ? _a : false);
|
|
91
94
|
utils_1.log(options, types_1.LogLevel.Debug, `\nParsing ${templatePath}`, `\nBase path: ${basePath}`, `\nFull input path: ${inputPath}`, `\nOutput Path Opt: ${outputPathOpt}`, `\nFull output dir: ${outputDir}`, `\nFull output path: ${outputPath}`, `\n`);
|
|
92
95
|
await utils_1.createDirIfNotExists(path_1.default.dirname(outputPath), options);
|
|
93
96
|
utils_1.log(options, types_1.LogLevel.Info, `Writing to ${outputPath}`);
|
|
94
|
-
await utils_1.copyFileTransformed(options,
|
|
97
|
+
await utils_1.copyFileTransformed(options, { exists, overwrite, outputPath, inputPath });
|
|
95
98
|
resolve();
|
|
96
99
|
}
|
|
97
100
|
catch (e) {
|
package/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAEvB,mCAkBgB;AAChB,mCAAkD;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACI,KAAK,UAAU,QAAQ,CAAC,EAAE,GAAG,OAAO,EAAkB;;IAC3D,MAAA,OAAO,CAAC,MAAM,oCAAd,OAAO,CAAC,MAAM,GAAK,OAAO,CAAC,GAAG,EAAE,EAAA;IAEhC,uBAAe,CAAC,OAAO,CAAC,CAAA;IACxB,IAAI;QACF,OAAO,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;QACtF,mBAAW,CAAC,OAAO,CAAC,CAAA;QACpB,KAAK,IAAI,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE;YACvC,IAAI;gBACF,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,2BAAmB,CAChG,OAAO,EACP,SAAS,CACV,CAAA;gBACD,MAAM,wBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;gBAC7C,MAAM,KAAK,GAAG,MAAM,mBAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAClD,KAAK,MAAM,aAAa,IAAI,KAAK,EAAE;oBACjC,IAAI,MAAM,aAAK,CAAC,aAAa,CAAC,EAAE;wBAC9B,SAAQ;qBACT;oBACD,MAAM,OAAO,GAAG,wBAAgB,CAAC,cAAI,CAAC,OAAO,CAAC,kBAAU,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;oBACtG,MAAM,QAAQ,GAAG,mBAAW,CAAC,OAAO,CAAC,CAAA;oBACrC,oBAAY,CAAC,OAAO,EAAE;wBACpB,YAAY;wBACZ,OAAO;wBACP,QAAQ;wBACR,aAAa;wBACb,eAAe;wBACf,QAAQ;wBACR,WAAW;wBACX,MAAM;qBACP,CAAC,CAAA;oBACF,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
package/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
export declare enum LogLevel {
|
|
2
3
|
None = 0,
|
|
3
4
|
Debug = 1,
|
|
@@ -7,9 +8,9 @@ export declare enum LogLevel {
|
|
|
7
8
|
}
|
|
8
9
|
export declare type FileResponseFn<T> = (fullPath: string, basedir: string, basename: string) => T;
|
|
9
10
|
export declare type FileResponse<T> = T | FileResponseFn<T>;
|
|
10
|
-
export declare type DefaultHelperKeys = "camelCase" | "
|
|
11
|
+
export declare type DefaultHelperKeys = "camelCase" | "date" | "hyphenCase" | "kebabCase" | "lowerCase" | "now" | "pascalCase" | "snakeCase" | "startCase" | "upperCase";
|
|
11
12
|
export declare type HelperKeys<T> = DefaultHelperKeys | T;
|
|
12
|
-
export declare type Helper =
|
|
13
|
+
export declare type Helper = Handlebars.HelperDelegate;
|
|
13
14
|
export interface ScaffoldConfig {
|
|
14
15
|
/**
|
|
15
16
|
* Name to be passed to the generated files. `{{name}}` and `{{Name}}` inside contents and file names will be replaced
|
|
@@ -89,6 +90,21 @@ export interface ScaffoldConfig {
|
|
|
89
90
|
* helpers, or a custom one you provide to `helpers`. Defaults to `undefined`, which means no transformation is done.
|
|
90
91
|
*/
|
|
91
92
|
subFolderNameHelper?: DefaultHelperKeys | string;
|
|
93
|
+
/**
|
|
94
|
+
* This callback runs right before content is being written to the disk. If you supply this function, you may return
|
|
95
|
+
* a string that represents the final content of your file, you may process the content as you see fit. For example,
|
|
96
|
+
* you may run formatters on a file, fix output in edge-cases not supported by helpers or data, etc.
|
|
97
|
+
*
|
|
98
|
+
* If the return value of this function is `undefined`, the original content will be used.
|
|
99
|
+
*
|
|
100
|
+
* @param content The original template after token replacement
|
|
101
|
+
* @param rawContent The original template before token replacement
|
|
102
|
+
* @param outputPath The final output path of the processed file
|
|
103
|
+
*
|
|
104
|
+
* @returns `String | Buffer | undefined` The final output of the file contents-only, after further modifications -
|
|
105
|
+
* or `undefined` to use the original content (i.e. `content.toString()`)
|
|
106
|
+
*/
|
|
107
|
+
beforeWrite?(content: Buffer, rawContent: Buffer, outputPath: string): string | Buffer | undefined | Promise<string | Buffer | undefined>;
|
|
92
108
|
}
|
|
93
109
|
export interface ScaffoldCmdConfig {
|
|
94
110
|
name: string;
|
package/utils.d.ts
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { DefaultHelperKeys, FileResponse, Helper, LogLevel, ScaffoldConfig } from "./types";
|
|
3
3
|
export declare const defaultHelpers: Record<DefaultHelperKeys, Helper>;
|
|
4
|
+
export declare function _dateHelper(date: Date, formatString: string): string;
|
|
5
|
+
export declare function _dateHelper(date: Date, formatString: string, durationDifference: number, durationType: keyof Duration): string;
|
|
6
|
+
export declare function nowHelper(formatString: string): string;
|
|
7
|
+
export declare function nowHelper(formatString: string, durationDifference: number, durationType: keyof Duration): string;
|
|
8
|
+
export declare function dateHelper(date: string, formatString: string): string;
|
|
9
|
+
export declare function dateHelper(date: string, formatString: string, durationDifference: number, durationType: keyof Duration): string;
|
|
4
10
|
export declare function registerHelpers(options: ScaffoldConfig): void;
|
|
5
11
|
export declare function handleErr(err: NodeJS.ErrnoException | null): void;
|
|
6
12
|
export declare function log(options: ScaffoldConfig, level: LogLevel, ...obj: any[]): void;
|
|
7
13
|
export declare function createDirIfNotExists(dir: string, options: ScaffoldConfig): Promise<void>;
|
|
8
|
-
export declare function getOptionValueForFile<T>(options: ScaffoldConfig, filePath: string,
|
|
14
|
+
export declare function getOptionValueForFile<T>(options: ScaffoldConfig, filePath: string, fn: FileResponse<T>, defaultValue?: T): T;
|
|
9
15
|
export declare function handlebarsParse(options: ScaffoldConfig, templateBuffer: Buffer | string, { isPath }?: {
|
|
10
16
|
isPath?: boolean;
|
|
11
|
-
}):
|
|
17
|
+
}): Buffer;
|
|
12
18
|
export declare function pathExists(filePath: string): Promise<boolean>;
|
|
13
19
|
export declare function pascalCase(s: string): string;
|
|
14
20
|
export declare function isDir(path: string): Promise<boolean>;
|
|
@@ -36,13 +42,13 @@ export declare function getTemplateFileInfo(options: ScaffoldConfig, data: Recor
|
|
|
36
42
|
templatePath: string;
|
|
37
43
|
basePath: string;
|
|
38
44
|
}): Promise<OutputFileInfo>;
|
|
39
|
-
export declare function copyFileTransformed(options: ScaffoldConfig,
|
|
45
|
+
export declare function copyFileTransformed(options: ScaffoldConfig, { exists, overwrite, outputPath, inputPath, }: {
|
|
40
46
|
exists: boolean;
|
|
41
47
|
overwrite: boolean;
|
|
42
48
|
outputPath: string;
|
|
43
49
|
inputPath: string;
|
|
44
50
|
}): Promise<void>;
|
|
45
|
-
export declare function getOutputDir(options: ScaffoldConfig,
|
|
51
|
+
export declare function getOutputDir(options: ScaffoldConfig, outputPathOpt: string, basePath: string): string;
|
|
46
52
|
export declare function logInputFile(options: ScaffoldConfig, { origTemplate, relPath, template, inputFilePath, nonGlobTemplate, basePath, isDirOrGlob, isGlob, }: {
|
|
47
53
|
origTemplate: string;
|
|
48
54
|
relPath: string;
|
package/utils.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.logInitStep = exports.logInputFile = exports.getOutputDir = exports.copyFileTransformed = exports.getTemplateFileInfo = exports.ensureFileExists = exports.getTemplateGlobInfo = exports.getFileList = exports.getBasePath = exports.makeRelativePath = exports.removeGlob = exports.isDir = exports.pascalCase = exports.pathExists = exports.handlebarsParse = exports.getOptionValueForFile = exports.createDirIfNotExists = exports.log = exports.handleErr = exports.registerHelpers = exports.defaultHelpers = void 0;
|
|
6
|
+
exports.logInitStep = exports.logInputFile = exports.getOutputDir = exports.copyFileTransformed = exports.getTemplateFileInfo = exports.ensureFileExists = exports.getTemplateGlobInfo = exports.getFileList = exports.getBasePath = exports.makeRelativePath = exports.removeGlob = exports.isDir = exports.pascalCase = exports.pathExists = exports.handlebarsParse = exports.getOptionValueForFile = exports.createDirIfNotExists = exports.log = exports.handleErr = exports.registerHelpers = exports.dateHelper = exports.nowHelper = exports._dateHelper = exports.defaultHelpers = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const constants_1 = require("constants");
|
|
9
9
|
const types_1 = require("./types");
|
|
@@ -15,6 +15,14 @@ const handlebars_1 = __importDefault(require("handlebars"));
|
|
|
15
15
|
const fs_1 = require("fs");
|
|
16
16
|
const chalk_1 = __importDefault(require("chalk"));
|
|
17
17
|
const { stat, access, mkdir } = fs_1.promises;
|
|
18
|
+
const add_1 = __importDefault(require("date-fns/add"));
|
|
19
|
+
const format_1 = __importDefault(require("date-fns/format"));
|
|
20
|
+
const parseISO_1 = __importDefault(require("date-fns/parseISO"));
|
|
21
|
+
const dateFns = {
|
|
22
|
+
add: add_1.default,
|
|
23
|
+
format: format_1.default,
|
|
24
|
+
parseISO: parseISO_1.default,
|
|
25
|
+
};
|
|
18
26
|
const glob_1 = require("glob");
|
|
19
27
|
const util_1 = require("util");
|
|
20
28
|
const { readFile, writeFile } = fs_1.promises;
|
|
@@ -27,7 +35,24 @@ exports.defaultHelpers = {
|
|
|
27
35
|
pascalCase,
|
|
28
36
|
lowerCase: (text) => text.toLowerCase(),
|
|
29
37
|
upperCase: (text) => text.toUpperCase(),
|
|
38
|
+
now: nowHelper,
|
|
39
|
+
date: dateHelper,
|
|
30
40
|
};
|
|
41
|
+
function _dateHelper(date, formatString, durationDifference, durationType) {
|
|
42
|
+
if (durationType && durationDifference !== undefined) {
|
|
43
|
+
return dateFns.format(dateFns.add(date, { [durationType]: durationDifference }), formatString);
|
|
44
|
+
}
|
|
45
|
+
return dateFns.format(date, formatString);
|
|
46
|
+
}
|
|
47
|
+
exports._dateHelper = _dateHelper;
|
|
48
|
+
function nowHelper(formatString, durationDifference, durationType) {
|
|
49
|
+
return _dateHelper(new Date(), formatString, durationDifference, durationType);
|
|
50
|
+
}
|
|
51
|
+
exports.nowHelper = nowHelper;
|
|
52
|
+
function dateHelper(date, formatString, durationDifference, durationType) {
|
|
53
|
+
return _dateHelper(dateFns.parseISO(date), formatString, durationDifference, durationType);
|
|
54
|
+
}
|
|
55
|
+
exports.dateHelper = dateHelper;
|
|
31
56
|
function registerHelpers(options) {
|
|
32
57
|
const _helpers = { ...exports.defaultHelpers, ...options.helpers };
|
|
33
58
|
for (const helperName in _helpers) {
|
|
@@ -83,7 +108,7 @@ async function createDirIfNotExists(dir, options) {
|
|
|
83
108
|
}
|
|
84
109
|
}
|
|
85
110
|
exports.createDirIfNotExists = createDirIfNotExists;
|
|
86
|
-
function getOptionValueForFile(options, filePath,
|
|
111
|
+
function getOptionValueForFile(options, filePath, fn, defaultValue) {
|
|
87
112
|
if (typeof fn !== "function") {
|
|
88
113
|
return defaultValue !== null && defaultValue !== void 0 ? defaultValue : fn;
|
|
89
114
|
}
|
|
@@ -102,11 +127,12 @@ function handlebarsParse(options, templateBuffer, { isPath = false } = {}) {
|
|
|
102
127
|
if (isPath && path_1.default.sep !== "/") {
|
|
103
128
|
outputContents = outputContents.replace(/\//g, "\\");
|
|
104
129
|
}
|
|
105
|
-
return outputContents;
|
|
130
|
+
return Buffer.from(outputContents);
|
|
106
131
|
}
|
|
107
|
-
catch {
|
|
132
|
+
catch (e) {
|
|
133
|
+
log(options, types_1.LogLevel.Debug, e);
|
|
108
134
|
log(options, types_1.LogLevel.Warning, "Couldn't parse file with handlebars, returning original content");
|
|
109
|
-
return templateBuffer;
|
|
135
|
+
return Buffer.from(templateBuffer);
|
|
110
136
|
}
|
|
111
137
|
}
|
|
112
138
|
exports.handlebarsParse = handlebarsParse;
|
|
@@ -182,8 +208,8 @@ async function ensureFileExists(template, isGlob) {
|
|
|
182
208
|
exports.ensureFileExists = ensureFileExists;
|
|
183
209
|
async function getTemplateFileInfo(options, data, { templatePath, basePath }) {
|
|
184
210
|
const inputPath = path_1.default.resolve(process.cwd(), templatePath);
|
|
185
|
-
const outputPathOpt = getOptionValueForFile(options, inputPath,
|
|
186
|
-
const outputDir = getOutputDir(options,
|
|
211
|
+
const outputPathOpt = getOptionValueForFile(options, inputPath, options.output);
|
|
212
|
+
const outputDir = getOutputDir(options, outputPathOpt, basePath);
|
|
187
213
|
const outputPath = handlebarsParse(options, path_1.default.join(outputDir, path_1.default.basename(inputPath)), {
|
|
188
214
|
isPath: true,
|
|
189
215
|
}).toString();
|
|
@@ -191,20 +217,22 @@ async function getTemplateFileInfo(options, data, { templatePath, basePath }) {
|
|
|
191
217
|
return { inputPath, outputPathOpt, outputDir, outputPath, exists };
|
|
192
218
|
}
|
|
193
219
|
exports.getTemplateFileInfo = getTemplateFileInfo;
|
|
194
|
-
async function copyFileTransformed(options,
|
|
220
|
+
async function copyFileTransformed(options, { exists, overwrite, outputPath, inputPath, }) {
|
|
221
|
+
var _a, _b;
|
|
195
222
|
if (!exists || overwrite) {
|
|
196
223
|
if (exists && overwrite) {
|
|
197
224
|
log(options, types_1.LogLevel.Info, `File ${outputPath} exists, overwriting`);
|
|
198
225
|
}
|
|
199
226
|
const templateBuffer = await readFile(inputPath);
|
|
200
|
-
const
|
|
227
|
+
const unprocessedOutputContents = handlebarsParse(options, templateBuffer);
|
|
228
|
+
const finalOutputContents = ((_b = (await ((_a = options.beforeWrite) === null || _a === void 0 ? void 0 : _a.call(options, unprocessedOutputContents, templateBuffer, outputPath)))) !== null && _b !== void 0 ? _b : unprocessedOutputContents).toString();
|
|
201
229
|
if (!options.dryRun) {
|
|
202
|
-
await writeFile(outputPath,
|
|
230
|
+
await writeFile(outputPath, finalOutputContents);
|
|
203
231
|
log(options, types_1.LogLevel.Info, "Done.");
|
|
204
232
|
}
|
|
205
233
|
else {
|
|
206
234
|
log(options, types_1.LogLevel.Info, "Content output:");
|
|
207
|
-
log(options, types_1.LogLevel.Info,
|
|
235
|
+
log(options, types_1.LogLevel.Info, finalOutputContents);
|
|
208
236
|
}
|
|
209
237
|
}
|
|
210
238
|
else if (exists) {
|
|
@@ -212,13 +240,13 @@ async function copyFileTransformed(options, data, { exists, overwrite, outputPat
|
|
|
212
240
|
}
|
|
213
241
|
}
|
|
214
242
|
exports.copyFileTransformed = copyFileTransformed;
|
|
215
|
-
function getOutputDir(options,
|
|
243
|
+
function getOutputDir(options, outputPathOpt, basePath) {
|
|
216
244
|
return path_1.default.resolve(process.cwd(), ...[
|
|
217
245
|
outputPathOpt,
|
|
218
246
|
basePath,
|
|
219
247
|
options.createSubFolder
|
|
220
248
|
? options.subFolderNameHelper
|
|
221
|
-
? handlebarsParse(options, `{{ ${options.subFolderNameHelper} name }}`)
|
|
249
|
+
? handlebarsParse(options, `{{ ${options.subFolderNameHelper} name }}`).toString()
|
|
222
250
|
: options.name
|
|
223
251
|
: undefined,
|
|
224
252
|
].filter(Boolean));
|
package/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|