@form8ion/javascript 3.0.0-alpha.1 → 3.1.0-alpha.2
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 +23 -2
- package/example.js +25 -3
- package/lib/index.cjs.js +60 -27
- package/lib/index.cjs.js.map +1 -1
- package/lib/index.es.js +61 -28
- package/lib/index.es.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -45,7 +45,13 @@ $ npm install @form8ion/javascript --save
|
|
|
45
45
|
|
|
46
46
|
```javascript
|
|
47
47
|
const {dialects, projectTypes} = require('@form8ion/javascript-core');
|
|
48
|
-
const {
|
|
48
|
+
const {
|
|
49
|
+
scaffold: scaffoldJavaScript,
|
|
50
|
+
lift: liftJavascript,
|
|
51
|
+
test: thisIsAJavaScriptProject,
|
|
52
|
+
scaffoldUnitTesting,
|
|
53
|
+
questionNames
|
|
54
|
+
} = require('@form8ion/javascript');
|
|
49
55
|
```
|
|
50
56
|
|
|
51
57
|
#### Execute
|
|
@@ -53,9 +59,10 @@ const {scaffold: scaffoldJavaScript, scaffoldUnitTesting, questionNames} = requi
|
|
|
53
59
|
```javascript
|
|
54
60
|
(async () => {
|
|
55
61
|
const accountName = 'form8ion';
|
|
62
|
+
const projectRoot = process.cwd();
|
|
56
63
|
|
|
57
64
|
await scaffoldJavaScript({
|
|
58
|
-
projectRoot
|
|
65
|
+
projectRoot,
|
|
59
66
|
projectName: 'project-name',
|
|
60
67
|
visibility: 'Public',
|
|
61
68
|
license: 'MIT',
|
|
@@ -83,6 +90,20 @@ const {scaffold: scaffoldJavaScript, scaffoldUnitTesting, questionNames} = requi
|
|
|
83
90
|
}
|
|
84
91
|
});
|
|
85
92
|
|
|
93
|
+
if (await thisIsAJavaScriptProject({projectRoot})) {
|
|
94
|
+
await liftJavascript({
|
|
95
|
+
projectRoot,
|
|
96
|
+
configs: {eslint: {scope: '@foo'}},
|
|
97
|
+
results: {
|
|
98
|
+
dependencies: [],
|
|
99
|
+
devDependencies: [],
|
|
100
|
+
scripts: {},
|
|
101
|
+
eslintConfigs: [],
|
|
102
|
+
packageManager: 'npm'
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
86
107
|
await scaffoldUnitTesting({
|
|
87
108
|
projectRoot: process.cwd(),
|
|
88
109
|
frameworks: {
|
package/example.js
CHANGED
|
@@ -5,9 +5,10 @@ import stubbedFs from 'mock-fs';
|
|
|
5
5
|
import td from 'testdouble';
|
|
6
6
|
import 'validate-npm-package-name';
|
|
7
7
|
|
|
8
|
-
// remark-usage-ignore-next
|
|
8
|
+
// remark-usage-ignore-next 10
|
|
9
9
|
stubbedFs({
|
|
10
10
|
node_modules: stubbedFs.load(resolve(...[__dirname, 'node_modules'])),
|
|
11
|
+
'.nvmrc': 'v1.2.3',
|
|
11
12
|
lib: stubbedFs.load(resolve(...[__dirname, 'lib'])),
|
|
12
13
|
templates: stubbedFs.load(resolve(...[__dirname, 'templates']))
|
|
13
14
|
});
|
|
@@ -17,14 +18,21 @@ td.when(execa('. ~/.nvm/nvm.sh && nvm ls-remote --lts', {shell: true}))
|
|
|
17
18
|
td.when(execa('. ~/.nvm/nvm.sh && nvm install', {shell: true})).thenReturn({stdout: {pipe: () => undefined}});
|
|
18
19
|
|
|
19
20
|
const {dialects, projectTypes} = require('@form8ion/javascript-core');
|
|
20
|
-
const {
|
|
21
|
+
const {
|
|
22
|
+
scaffold: scaffoldJavaScript,
|
|
23
|
+
lift: liftJavascript,
|
|
24
|
+
test: thisIsAJavaScriptProject,
|
|
25
|
+
scaffoldUnitTesting,
|
|
26
|
+
questionNames
|
|
27
|
+
} = require('./lib/index.cjs');
|
|
21
28
|
|
|
22
29
|
// #### Execute
|
|
23
30
|
(async () => {
|
|
24
31
|
const accountName = 'form8ion';
|
|
32
|
+
const projectRoot = process.cwd();
|
|
25
33
|
|
|
26
34
|
await scaffoldJavaScript({
|
|
27
|
-
projectRoot
|
|
35
|
+
projectRoot,
|
|
28
36
|
projectName: 'project-name',
|
|
29
37
|
visibility: 'Public',
|
|
30
38
|
license: 'MIT',
|
|
@@ -52,6 +60,20 @@ const {scaffold: scaffoldJavaScript, scaffoldUnitTesting, questionNames} = requi
|
|
|
52
60
|
}
|
|
53
61
|
});
|
|
54
62
|
|
|
63
|
+
if (await thisIsAJavaScriptProject({projectRoot})) {
|
|
64
|
+
await liftJavascript({
|
|
65
|
+
projectRoot,
|
|
66
|
+
configs: {eslint: {scope: '@foo'}},
|
|
67
|
+
results: {
|
|
68
|
+
dependencies: [],
|
|
69
|
+
devDependencies: [],
|
|
70
|
+
scripts: {},
|
|
71
|
+
eslintConfigs: [],
|
|
72
|
+
packageManager: 'npm'
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
55
77
|
await scaffoldUnitTesting({
|
|
56
78
|
projectRoot: process.cwd(),
|
|
57
79
|
frameworks: {
|
package/lib/index.cjs.js
CHANGED
|
@@ -5,15 +5,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var languageScaffolderPrompts = require('@travi/language-scaffolder-prompts');
|
|
6
6
|
var deepmerge = require('deepmerge');
|
|
7
7
|
var javascriptCore = require('@form8ion/javascript-core');
|
|
8
|
-
var codecov = require('@form8ion/codecov');
|
|
9
|
-
var fs = require('fs');
|
|
10
8
|
var joi = require('joi');
|
|
11
9
|
var inquirer = require('inquirer');
|
|
12
10
|
var overridablePrompts = require('@form8ion/overridable-prompts');
|
|
13
|
-
var
|
|
14
|
-
var
|
|
11
|
+
var codecov = require('@form8ion/codecov');
|
|
12
|
+
var fs = require('fs');
|
|
15
13
|
var core = require('@form8ion/core');
|
|
16
|
-
var
|
|
14
|
+
var cliMessages = require('@travi/cli-messages');
|
|
17
15
|
var commitConvention = require('@form8ion/commit-convention');
|
|
18
16
|
var hoek = require('@hapi/hoek');
|
|
19
17
|
var execa = require('execa');
|
|
@@ -26,6 +24,8 @@ var camelcase = require('camelcase');
|
|
|
26
24
|
var makeDir = require('make-dir');
|
|
27
25
|
var touch = require('touch');
|
|
28
26
|
var path = require('path');
|
|
27
|
+
var husky = require('@form8ion/husky');
|
|
28
|
+
var eslint = require('@form8ion/eslint');
|
|
29
29
|
|
|
30
30
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
31
31
|
|
|
@@ -150,6 +150,45 @@ async function scaffoldCoverage ({
|
|
|
150
150
|
}));
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
function nycIsConfigured ({
|
|
154
|
+
projectRoot
|
|
155
|
+
}) {
|
|
156
|
+
return core.fileExists(`${projectRoot}/.nycrc`);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async function removeNyc ({
|
|
160
|
+
projectRoot
|
|
161
|
+
}) {
|
|
162
|
+
await Promise.all([fs.promises.unlink(`${projectRoot}/.nycrc`), fs.promises.rmdir(`${projectRoot}/.nyc_output`, {
|
|
163
|
+
recursive: true,
|
|
164
|
+
force: true
|
|
165
|
+
})]);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
async function lift$2({
|
|
169
|
+
projectRoot
|
|
170
|
+
}) {
|
|
171
|
+
if (await nycIsConfigured({
|
|
172
|
+
projectRoot
|
|
173
|
+
})) {
|
|
174
|
+
const [c8Results] = await Promise.all([scaffoldC8({
|
|
175
|
+
projectRoot
|
|
176
|
+
}), removeNyc({
|
|
177
|
+
projectRoot
|
|
178
|
+
})]);
|
|
179
|
+
return c8Results;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return {};
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
var coveragePlugin = /*#__PURE__*/Object.freeze({
|
|
186
|
+
__proto__: null,
|
|
187
|
+
scaffold: scaffoldCoverage,
|
|
188
|
+
lift: lift$2,
|
|
189
|
+
test: nycIsConfigured
|
|
190
|
+
});
|
|
191
|
+
|
|
153
192
|
const unitTestFrameworksSchema = joi__namespace.object().required().pattern(/^/, joi__namespace.object({
|
|
154
193
|
scaffolder: joi__namespace.func().arity(1).required()
|
|
155
194
|
}));
|
|
@@ -252,6 +291,20 @@ var enginesEnhancer = /*#__PURE__*/Object.freeze({
|
|
|
252
291
|
lift: lift$1
|
|
253
292
|
});
|
|
254
293
|
|
|
294
|
+
function enhanceHuskyEnhancer(packageManager) {
|
|
295
|
+
return {
|
|
296
|
+
test: husky.test,
|
|
297
|
+
lift: ({
|
|
298
|
+
projectRoot,
|
|
299
|
+
results
|
|
300
|
+
}) => husky.lift({
|
|
301
|
+
projectRoot,
|
|
302
|
+
results,
|
|
303
|
+
packageManager
|
|
304
|
+
})
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
|
|
255
308
|
async function liftPackage ({
|
|
256
309
|
projectRoot,
|
|
257
310
|
scripts,
|
|
@@ -295,20 +348,6 @@ async function resolvePackageManager ({
|
|
|
295
348
|
throw new Error('Package-manager could not be determined');
|
|
296
349
|
}
|
|
297
350
|
|
|
298
|
-
function enhanceHuskyEnhancer(packageManager) {
|
|
299
|
-
return {
|
|
300
|
-
test: husky.test,
|
|
301
|
-
lift: ({
|
|
302
|
-
projectRoot,
|
|
303
|
-
results
|
|
304
|
-
}) => husky.lift({
|
|
305
|
-
projectRoot,
|
|
306
|
-
results,
|
|
307
|
-
packageManager
|
|
308
|
-
})
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
|
|
312
351
|
async function lift ({
|
|
313
352
|
projectRoot,
|
|
314
353
|
results
|
|
@@ -332,7 +371,7 @@ async function lift ({
|
|
|
332
371
|
});
|
|
333
372
|
const enhancerResults = await applyEnhancers({
|
|
334
373
|
results,
|
|
335
|
-
enhancers: [enhanceHuskyEnhancer(packageManager), enginesEnhancer],
|
|
374
|
+
enhancers: [enhanceHuskyEnhancer(packageManager), enginesEnhancer, coveragePlugin],
|
|
336
375
|
projectRoot
|
|
337
376
|
});
|
|
338
377
|
await liftPackage(deepmerge__default["default"].all([{
|
|
@@ -1655,13 +1694,7 @@ async function scaffolder (options) {
|
|
|
1655
1694
|
async function test ({
|
|
1656
1695
|
projectRoot
|
|
1657
1696
|
}) {
|
|
1658
|
-
|
|
1659
|
-
const stats = await fs.promises.stat(`${projectRoot}/.nvmrc`);
|
|
1660
|
-
return stats.isFile();
|
|
1661
|
-
} catch (e) {
|
|
1662
|
-
if ('ENOENT' === e.code) return false;
|
|
1663
|
-
throw e;
|
|
1664
|
-
}
|
|
1697
|
+
return core.fileExists(`${projectRoot}/.nvmrc`);
|
|
1665
1698
|
}
|
|
1666
1699
|
|
|
1667
1700
|
const questionNames = _objectSpread2(_objectSpread2({}, languageScaffolderPrompts.questionNames), questionNames$1);
|