@plugjs/build 0.2.1 → 0.2.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/dist/index.cjs +52 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +17 -7
- package/dist/index.mjs +51 -30
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
- package/src/index.ts +59 -35
package/dist/index.cjs
CHANGED
|
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
// index.ts
|
|
22
22
|
var src_exports = {};
|
|
23
23
|
__export(src_exports, {
|
|
24
|
+
banner: () => banner,
|
|
24
25
|
tasks: () => tasks
|
|
25
26
|
});
|
|
26
27
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -61,7 +62,7 @@ function tasks(options = {}) {
|
|
|
61
62
|
optimalFileCoverage: _optimalFileCoverage = void 0,
|
|
62
63
|
esbuildOptions: _esbuildOptions = {}
|
|
63
64
|
} = options;
|
|
64
|
-
const
|
|
65
|
+
const emitBanner = _banners ? banner : (...args) => void 0;
|
|
65
66
|
const esbuildMergedOptions = Object.assign({}, esbuildDefaults, _esbuildOptions);
|
|
66
67
|
return (0, import_plug.build)({
|
|
67
68
|
/** The directory for the original sources (default: `src`) */
|
|
@@ -110,8 +111,8 @@ function tasks(options = {}) {
|
|
|
110
111
|
_find_types() {
|
|
111
112
|
return (0, import_plug.find)("**/*.d.ts", { directory: this.sourceDir });
|
|
112
113
|
},
|
|
113
|
-
/** Find all types definition files
|
|
114
|
-
|
|
114
|
+
/** Find all extra types definition files from `extraTypesDir` */
|
|
115
|
+
_find_extra_types() {
|
|
115
116
|
if (!(0, import_plug.isDirectory)(this.extraTypesDir))
|
|
116
117
|
return (0, import_plug.noop)();
|
|
117
118
|
return (0, import_plug.find)("**/*.d.ts", { directory: this.extraTypesDir });
|
|
@@ -124,6 +125,15 @@ function tasks(options = {}) {
|
|
|
124
125
|
_find_tests() {
|
|
125
126
|
return (0, import_plug.find)(this.testGlob, { directory: this.testDir, ignore: "**/*.d.ts" });
|
|
126
127
|
},
|
|
128
|
+
/** Find all source files to lint */
|
|
129
|
+
_find_lint_sources() {
|
|
130
|
+
return (0, import_plug.merge)([
|
|
131
|
+
this._find_sources(),
|
|
132
|
+
this._find_tests(),
|
|
133
|
+
this._find_types(),
|
|
134
|
+
this._find_extra_types()
|
|
135
|
+
]);
|
|
136
|
+
},
|
|
127
137
|
/* ====================================================================== *
|
|
128
138
|
* TRANSPILE *
|
|
129
139
|
* ====================================================================== */
|
|
@@ -150,7 +160,7 @@ function tasks(options = {}) {
|
|
|
150
160
|
return (0, import_plug.merge)([
|
|
151
161
|
this._find_sources(),
|
|
152
162
|
this._find_types(),
|
|
153
|
-
this.
|
|
163
|
+
this._find_extra_types()
|
|
154
164
|
]).tsc("tsconfig.json", {
|
|
155
165
|
noEmit: false,
|
|
156
166
|
rootDir: this.sourceDir,
|
|
@@ -160,7 +170,7 @@ function tasks(options = {}) {
|
|
|
160
170
|
});
|
|
161
171
|
},
|
|
162
172
|
/** Copy all resources coming alongside our sources */
|
|
163
|
-
|
|
173
|
+
copy_resources() {
|
|
164
174
|
return (0, import_plug.merge)([
|
|
165
175
|
this._find_resources(),
|
|
166
176
|
this._find_types()
|
|
@@ -168,34 +178,35 @@ function tasks(options = {}) {
|
|
|
168
178
|
},
|
|
169
179
|
/** Transpile all source code */
|
|
170
180
|
async transpile() {
|
|
171
|
-
|
|
181
|
+
emitBanner("Transpiling source files");
|
|
172
182
|
if ((0, import_plug.isDirectory)(this.destDir))
|
|
173
183
|
await (0, import_plug.rmrf)(this.destDir);
|
|
174
|
-
|
|
184
|
+
const result = await (0, import_plug.merge)([
|
|
175
185
|
_cjsTranspile ? this.transpile_cjs() : (0, import_plug.noop)(),
|
|
176
186
|
_esmTranspile ? this.transpile_esm() : (0, import_plug.noop)(),
|
|
177
187
|
this.transpile_types(),
|
|
178
|
-
this.
|
|
188
|
+
this.copy_resources()
|
|
179
189
|
]);
|
|
190
|
+
return result;
|
|
180
191
|
},
|
|
181
192
|
/* ====================================================================== *
|
|
182
|
-
* TEST
|
|
193
|
+
* TEST & COVERAGE *
|
|
183
194
|
* ====================================================================== */
|
|
184
|
-
/** Run
|
|
195
|
+
/** Run tests */
|
|
185
196
|
async test() {
|
|
186
|
-
|
|
197
|
+
emitBanner("Running tests");
|
|
187
198
|
if (_coverage && (0, import_plug.isDirectory)(this.coverageDataDir))
|
|
188
199
|
await (0, import_plug.rmrf)(this.coverageDataDir);
|
|
189
200
|
await this._find_tests().jasmine({ coverageDir: _coverage ? this.coverageDataDir : void 0 });
|
|
190
201
|
},
|
|
191
|
-
/**
|
|
202
|
+
/** Ensure tests have run and generate a coverage report */
|
|
192
203
|
async coverage() {
|
|
193
|
-
let
|
|
204
|
+
let coveragePipe;
|
|
194
205
|
try {
|
|
195
206
|
await this.test();
|
|
196
207
|
} finally {
|
|
197
|
-
|
|
198
|
-
|
|
208
|
+
emitBanner("Preparing coverage report");
|
|
209
|
+
coveragePipe = this._find_sources().coverage(this.coverageDataDir, {
|
|
199
210
|
reportDir: this.coverageDir,
|
|
200
211
|
minimumCoverage: _minimumCoverage,
|
|
201
212
|
minimumFileCoverage: _minimumFileCoverage,
|
|
@@ -203,17 +214,15 @@ function tasks(options = {}) {
|
|
|
203
214
|
optimalFileCoverage: _optimalFileCoverage
|
|
204
215
|
});
|
|
205
216
|
}
|
|
206
|
-
return
|
|
217
|
+
return coveragePipe;
|
|
207
218
|
},
|
|
208
|
-
|
|
219
|
+
/* ====================================================================== *
|
|
220
|
+
* LINTING *
|
|
221
|
+
* ====================================================================== */
|
|
222
|
+
/** Lint all sources */
|
|
209
223
|
async lint() {
|
|
210
|
-
|
|
211
|
-
await (
|
|
212
|
-
this._find_sources(),
|
|
213
|
-
this._find_tests(),
|
|
214
|
-
this._find_types(),
|
|
215
|
-
this._find_extras()
|
|
216
|
-
]).eslint();
|
|
224
|
+
emitBanner("Linting sources");
|
|
225
|
+
await this._find_lint_sources().eslint();
|
|
217
226
|
},
|
|
218
227
|
/* ====================================================================== *
|
|
219
228
|
* PACKAGE.JSON EXPORTS *
|
|
@@ -221,7 +230,7 @@ function tasks(options = {}) {
|
|
|
221
230
|
/** Inject `exports` into the `package.json` file */
|
|
222
231
|
async exports() {
|
|
223
232
|
const files = await this.transpile();
|
|
224
|
-
|
|
233
|
+
emitBanner('Updating exports in "package.json"');
|
|
225
234
|
return (0, import_plug.merge)([files]).filter(this.exportsGlob, { directory: this.destDir, ignore: "**/*.map" }).exports({
|
|
226
235
|
cjsExtension: this.cjsExtension,
|
|
227
236
|
esmExtension: this.esmExtension,
|
|
@@ -230,11 +239,11 @@ function tasks(options = {}) {
|
|
|
230
239
|
});
|
|
231
240
|
},
|
|
232
241
|
/* ====================================================================== *
|
|
233
|
-
*
|
|
242
|
+
* ALL: DO EVERYTHING *
|
|
234
243
|
* ====================================================================== */
|
|
235
244
|
/* coverage ignore next */
|
|
236
|
-
/** Build everything */
|
|
237
|
-
async
|
|
245
|
+
/** Build everything. */
|
|
246
|
+
async all() {
|
|
238
247
|
if (_parallelize) {
|
|
239
248
|
await Promise.all([
|
|
240
249
|
this.transpile(),
|
|
@@ -247,11 +256,23 @@ function tasks(options = {}) {
|
|
|
247
256
|
await this.coverage();
|
|
248
257
|
await this.lint();
|
|
249
258
|
}
|
|
250
|
-
|
|
259
|
+
},
|
|
260
|
+
/* ====================================================================== *
|
|
261
|
+
* DEFAULT: DO EVERYTHING *
|
|
262
|
+
* ====================================================================== */
|
|
263
|
+
/* coverage ignore next */
|
|
264
|
+
/**
|
|
265
|
+
* Default task (simply invokes `this._all()`).
|
|
266
|
+
*
|
|
267
|
+
* Override this and invoke `this._all()` to inject tasks _before_ or
|
|
268
|
+
* _after_ the normal build execution.
|
|
269
|
+
*/
|
|
270
|
+
async default() {
|
|
271
|
+
await this.all();
|
|
251
272
|
}
|
|
252
273
|
});
|
|
253
274
|
}
|
|
254
|
-
function
|
|
275
|
+
function banner(message) {
|
|
255
276
|
import_plug.log.notice([
|
|
256
277
|
"",
|
|
257
278
|
(0, import_plug.$gry)(`\u2554${"".padStart(60, "\u2550")}\u2557`),
|
|
@@ -262,6 +283,7 @@ function emitBanner(message) {
|
|
|
262
283
|
}
|
|
263
284
|
// Annotate the CommonJS export names for ESM import in node:
|
|
264
285
|
0 && (module.exports = {
|
|
286
|
+
banner,
|
|
265
287
|
tasks
|
|
266
288
|
});
|
|
267
289
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAO;AACP,oBAAO;AACP,qBAAO;AACP,kBASO;AACP,wBAAO;AAIP,wBAAc,yBAjBd;AAoBA,IAAM,kBAAkC;AAAA,EACtC,UAAU;AAAA,EACV,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,SAAS,KAAE,2BAAc,CAAE;AAC7B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -97,12 +97,14 @@ export declare function tasks(options?: TasksOptions): import("@plugjs/plug").Bu
|
|
|
97
97
|
_find_sources(): Pipe;
|
|
98
98
|
/** Find all types definition files within sources */
|
|
99
99
|
_find_types(): Pipe;
|
|
100
|
-
/** Find all types definition files
|
|
101
|
-
|
|
100
|
+
/** Find all extra types definition files from `extraTypesDir` */
|
|
101
|
+
_find_extra_types(): Pipe;
|
|
102
102
|
/** Find all resource files (non-typescript files) within sources */
|
|
103
103
|
_find_resources(): Pipe;
|
|
104
104
|
/** Find all test source files */
|
|
105
105
|
_find_tests(): Pipe;
|
|
106
|
+
/** Find all source files to lint */
|
|
107
|
+
_find_lint_sources(): Pipe;
|
|
106
108
|
/** Transpile to CJS */
|
|
107
109
|
transpile_cjs(): Pipe;
|
|
108
110
|
/** Transpile to ESM */
|
|
@@ -110,17 +112,25 @@ export declare function tasks(options?: TasksOptions): import("@plugjs/plug").Bu
|
|
|
110
112
|
/** Generate all .d.ts files */
|
|
111
113
|
transpile_types(): Pipe;
|
|
112
114
|
/** Copy all resources coming alongside our sources */
|
|
113
|
-
|
|
115
|
+
copy_resources(): Pipe;
|
|
114
116
|
/** Transpile all source code */
|
|
115
117
|
transpile(): Promise<Pipe>;
|
|
116
|
-
/** Run
|
|
118
|
+
/** Run tests */
|
|
117
119
|
test(): Promise<void>;
|
|
118
|
-
/**
|
|
120
|
+
/** Ensure tests have run and generate a coverage report */
|
|
119
121
|
coverage(): Promise<Pipe>;
|
|
120
|
-
/**
|
|
122
|
+
/** Lint all sources */
|
|
121
123
|
lint(): Promise<void>;
|
|
122
124
|
/** Inject `exports` into the `package.json` file */
|
|
123
125
|
exports(): Promise<Pipe>;
|
|
124
|
-
/** Build everything */
|
|
126
|
+
/** Build everything. */
|
|
127
|
+
all(): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Default task (simply invokes `this._all()`).
|
|
130
|
+
*
|
|
131
|
+
* Override this and invoke `this._all()` to inject tasks _before_ or
|
|
132
|
+
* _after_ the normal build execution.
|
|
133
|
+
*/
|
|
125
134
|
default(): Promise<void>;
|
|
126
135
|
}>;
|
|
136
|
+
export declare function banner(message: string): void;
|
package/dist/index.mjs
CHANGED
|
@@ -47,7 +47,7 @@ function tasks(options = {}) {
|
|
|
47
47
|
optimalFileCoverage: _optimalFileCoverage = void 0,
|
|
48
48
|
esbuildOptions: _esbuildOptions = {}
|
|
49
49
|
} = options;
|
|
50
|
-
const
|
|
50
|
+
const emitBanner = _banners ? banner : (...args) => void 0;
|
|
51
51
|
const esbuildMergedOptions = Object.assign({}, esbuildDefaults, _esbuildOptions);
|
|
52
52
|
return build({
|
|
53
53
|
/** The directory for the original sources (default: `src`) */
|
|
@@ -96,8 +96,8 @@ function tasks(options = {}) {
|
|
|
96
96
|
_find_types() {
|
|
97
97
|
return find("**/*.d.ts", { directory: this.sourceDir });
|
|
98
98
|
},
|
|
99
|
-
/** Find all types definition files
|
|
100
|
-
|
|
99
|
+
/** Find all extra types definition files from `extraTypesDir` */
|
|
100
|
+
_find_extra_types() {
|
|
101
101
|
if (!isDirectory(this.extraTypesDir))
|
|
102
102
|
return noop();
|
|
103
103
|
return find("**/*.d.ts", { directory: this.extraTypesDir });
|
|
@@ -110,6 +110,15 @@ function tasks(options = {}) {
|
|
|
110
110
|
_find_tests() {
|
|
111
111
|
return find(this.testGlob, { directory: this.testDir, ignore: "**/*.d.ts" });
|
|
112
112
|
},
|
|
113
|
+
/** Find all source files to lint */
|
|
114
|
+
_find_lint_sources() {
|
|
115
|
+
return merge([
|
|
116
|
+
this._find_sources(),
|
|
117
|
+
this._find_tests(),
|
|
118
|
+
this._find_types(),
|
|
119
|
+
this._find_extra_types()
|
|
120
|
+
]);
|
|
121
|
+
},
|
|
113
122
|
/* ====================================================================== *
|
|
114
123
|
* TRANSPILE *
|
|
115
124
|
* ====================================================================== */
|
|
@@ -136,7 +145,7 @@ function tasks(options = {}) {
|
|
|
136
145
|
return merge([
|
|
137
146
|
this._find_sources(),
|
|
138
147
|
this._find_types(),
|
|
139
|
-
this.
|
|
148
|
+
this._find_extra_types()
|
|
140
149
|
]).tsc("tsconfig.json", {
|
|
141
150
|
noEmit: false,
|
|
142
151
|
rootDir: this.sourceDir,
|
|
@@ -146,7 +155,7 @@ function tasks(options = {}) {
|
|
|
146
155
|
});
|
|
147
156
|
},
|
|
148
157
|
/** Copy all resources coming alongside our sources */
|
|
149
|
-
|
|
158
|
+
copy_resources() {
|
|
150
159
|
return merge([
|
|
151
160
|
this._find_resources(),
|
|
152
161
|
this._find_types()
|
|
@@ -154,34 +163,35 @@ function tasks(options = {}) {
|
|
|
154
163
|
},
|
|
155
164
|
/** Transpile all source code */
|
|
156
165
|
async transpile() {
|
|
157
|
-
|
|
166
|
+
emitBanner("Transpiling source files");
|
|
158
167
|
if (isDirectory(this.destDir))
|
|
159
168
|
await rmrf(this.destDir);
|
|
160
|
-
|
|
169
|
+
const result = await merge([
|
|
161
170
|
_cjsTranspile ? this.transpile_cjs() : noop(),
|
|
162
171
|
_esmTranspile ? this.transpile_esm() : noop(),
|
|
163
172
|
this.transpile_types(),
|
|
164
|
-
this.
|
|
173
|
+
this.copy_resources()
|
|
165
174
|
]);
|
|
175
|
+
return result;
|
|
166
176
|
},
|
|
167
177
|
/* ====================================================================== *
|
|
168
|
-
* TEST
|
|
178
|
+
* TEST & COVERAGE *
|
|
169
179
|
* ====================================================================== */
|
|
170
|
-
/** Run
|
|
180
|
+
/** Run tests */
|
|
171
181
|
async test() {
|
|
172
|
-
|
|
182
|
+
emitBanner("Running tests");
|
|
173
183
|
if (_coverage && isDirectory(this.coverageDataDir))
|
|
174
184
|
await rmrf(this.coverageDataDir);
|
|
175
185
|
await this._find_tests().jasmine({ coverageDir: _coverage ? this.coverageDataDir : void 0 });
|
|
176
186
|
},
|
|
177
|
-
/**
|
|
187
|
+
/** Ensure tests have run and generate a coverage report */
|
|
178
188
|
async coverage() {
|
|
179
|
-
let
|
|
189
|
+
let coveragePipe;
|
|
180
190
|
try {
|
|
181
191
|
await this.test();
|
|
182
192
|
} finally {
|
|
183
|
-
|
|
184
|
-
|
|
193
|
+
emitBanner("Preparing coverage report");
|
|
194
|
+
coveragePipe = this._find_sources().coverage(this.coverageDataDir, {
|
|
185
195
|
reportDir: this.coverageDir,
|
|
186
196
|
minimumCoverage: _minimumCoverage,
|
|
187
197
|
minimumFileCoverage: _minimumFileCoverage,
|
|
@@ -189,17 +199,15 @@ function tasks(options = {}) {
|
|
|
189
199
|
optimalFileCoverage: _optimalFileCoverage
|
|
190
200
|
});
|
|
191
201
|
}
|
|
192
|
-
return
|
|
202
|
+
return coveragePipe;
|
|
193
203
|
},
|
|
194
|
-
|
|
204
|
+
/* ====================================================================== *
|
|
205
|
+
* LINTING *
|
|
206
|
+
* ====================================================================== */
|
|
207
|
+
/** Lint all sources */
|
|
195
208
|
async lint() {
|
|
196
|
-
|
|
197
|
-
await
|
|
198
|
-
this._find_sources(),
|
|
199
|
-
this._find_tests(),
|
|
200
|
-
this._find_types(),
|
|
201
|
-
this._find_extras()
|
|
202
|
-
]).eslint();
|
|
209
|
+
emitBanner("Linting sources");
|
|
210
|
+
await this._find_lint_sources().eslint();
|
|
203
211
|
},
|
|
204
212
|
/* ====================================================================== *
|
|
205
213
|
* PACKAGE.JSON EXPORTS *
|
|
@@ -207,7 +215,7 @@ function tasks(options = {}) {
|
|
|
207
215
|
/** Inject `exports` into the `package.json` file */
|
|
208
216
|
async exports() {
|
|
209
217
|
const files = await this.transpile();
|
|
210
|
-
|
|
218
|
+
emitBanner('Updating exports in "package.json"');
|
|
211
219
|
return merge([files]).filter(this.exportsGlob, { directory: this.destDir, ignore: "**/*.map" }).exports({
|
|
212
220
|
cjsExtension: this.cjsExtension,
|
|
213
221
|
esmExtension: this.esmExtension,
|
|
@@ -216,11 +224,11 @@ function tasks(options = {}) {
|
|
|
216
224
|
});
|
|
217
225
|
},
|
|
218
226
|
/* ====================================================================== *
|
|
219
|
-
*
|
|
227
|
+
* ALL: DO EVERYTHING *
|
|
220
228
|
* ====================================================================== */
|
|
221
229
|
/* coverage ignore next */
|
|
222
|
-
/** Build everything */
|
|
223
|
-
async
|
|
230
|
+
/** Build everything. */
|
|
231
|
+
async all() {
|
|
224
232
|
if (_parallelize) {
|
|
225
233
|
await Promise.all([
|
|
226
234
|
this.transpile(),
|
|
@@ -233,11 +241,23 @@ function tasks(options = {}) {
|
|
|
233
241
|
await this.coverage();
|
|
234
242
|
await this.lint();
|
|
235
243
|
}
|
|
236
|
-
|
|
244
|
+
},
|
|
245
|
+
/* ====================================================================== *
|
|
246
|
+
* DEFAULT: DO EVERYTHING *
|
|
247
|
+
* ====================================================================== */
|
|
248
|
+
/* coverage ignore next */
|
|
249
|
+
/**
|
|
250
|
+
* Default task (simply invokes `this._all()`).
|
|
251
|
+
*
|
|
252
|
+
* Override this and invoke `this._all()` to inject tasks _before_ or
|
|
253
|
+
* _after_ the normal build execution.
|
|
254
|
+
*/
|
|
255
|
+
async default() {
|
|
256
|
+
await this.all();
|
|
237
257
|
}
|
|
238
258
|
});
|
|
239
259
|
}
|
|
240
|
-
function
|
|
260
|
+
function banner(message) {
|
|
241
261
|
log.notice([
|
|
242
262
|
"",
|
|
243
263
|
$gry(`\u2554${"".padStart(60, "\u2550")}\u2557`),
|
|
@@ -247,6 +267,7 @@ function emitBanner(message) {
|
|
|
247
267
|
].join("\n"));
|
|
248
268
|
}
|
|
249
269
|
export {
|
|
270
|
+
banner,
|
|
250
271
|
tasks
|
|
251
272
|
};
|
|
252
273
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"mappings": ";AAAA,OAAO;AACP,OAAO;AACP,OAAO;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAAa;AAAA,EAAK;AAAA,EAClB;AAAA,EACA;AAAA,OACK;AACP,OAAO;AAIP,cAAc;AAGd,IAAM,kBAAkC;AAAA,EACtC,UAAU;AAAA,EACV,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,SAAS,CAAE,cAAc,CAAE;AAC7B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plugjs/build",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Simple shared build using PlugJS",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
"transpile": "plug transpile"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@plugjs/cov8": "^0.2.
|
|
33
|
-
"@plugjs/eslint": "^0.2.
|
|
32
|
+
"@plugjs/cov8": "^0.2.1",
|
|
33
|
+
"@plugjs/eslint": "^0.2.1",
|
|
34
34
|
"@plugjs/eslint-plugin": "^0.1.2",
|
|
35
|
-
"@plugjs/jasmine": "^0.2.
|
|
36
|
-
"@plugjs/plug": "^0.2.
|
|
37
|
-
"@plugjs/typescript": "^0.2.
|
|
35
|
+
"@plugjs/jasmine": "^0.2.1",
|
|
36
|
+
"@plugjs/plug": "^0.2.1",
|
|
37
|
+
"@plugjs/typescript": "^0.2.1"
|
|
38
38
|
},
|
|
39
39
|
"files": [
|
|
40
40
|
"*.md",
|
package/src/index.ts
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
} from '@plugjs/plug'
|
|
14
14
|
import '@plugjs/typescript'
|
|
15
15
|
|
|
16
|
-
import type { ESBuildOptions,
|
|
16
|
+
import type { ESBuildOptions, Pipe } from '@plugjs/plug'
|
|
17
17
|
|
|
18
18
|
export * from '@plugjs/plug'
|
|
19
19
|
|
|
@@ -89,7 +89,6 @@ export interface TasksOptions {
|
|
|
89
89
|
/** Optimal per-file coverage percentage (default: _none_) */
|
|
90
90
|
optimalFileCoverage?: number,
|
|
91
91
|
|
|
92
|
-
|
|
93
92
|
/**
|
|
94
93
|
* ESBuild compilation options
|
|
95
94
|
*
|
|
@@ -139,7 +138,7 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
139
138
|
} = options
|
|
140
139
|
|
|
141
140
|
// coverage ignore next
|
|
142
|
-
const
|
|
141
|
+
const emitBanner = _banners ? banner : (...args: any) => void args
|
|
143
142
|
|
|
144
143
|
// Merge esbuild defaults with specified options
|
|
145
144
|
const esbuildMergedOptions = Object.assign({}, esbuildDefaults, _esbuildOptions)
|
|
@@ -197,13 +196,12 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
197
196
|
return find('**/*.d.ts', { directory: this.sourceDir })
|
|
198
197
|
},
|
|
199
198
|
|
|
200
|
-
/** Find all types definition files
|
|
201
|
-
|
|
199
|
+
/** Find all extra types definition files from `extraTypesDir` */
|
|
200
|
+
_find_extra_types(): Pipe {
|
|
202
201
|
if (! isDirectory(this.extraTypesDir)) return noop()
|
|
203
202
|
return find('**/*.d.ts', { directory: this.extraTypesDir })
|
|
204
203
|
},
|
|
205
204
|
|
|
206
|
-
|
|
207
205
|
/** Find all resource files (non-typescript files) within sources */
|
|
208
206
|
_find_resources(): Pipe {
|
|
209
207
|
return find('**/*', { directory: this.sourceDir, ignore: '**/*.([cm])?ts' })
|
|
@@ -214,6 +212,16 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
214
212
|
return find(this.testGlob, { directory: this.testDir, ignore: '**/*.d.ts' })
|
|
215
213
|
},
|
|
216
214
|
|
|
215
|
+
/** Find all source files to lint */
|
|
216
|
+
_find_lint_sources(): Pipe {
|
|
217
|
+
return merge([
|
|
218
|
+
this._find_sources(),
|
|
219
|
+
this._find_tests(),
|
|
220
|
+
this._find_types(),
|
|
221
|
+
this._find_extra_types(),
|
|
222
|
+
])
|
|
223
|
+
},
|
|
224
|
+
|
|
217
225
|
/* ====================================================================== *
|
|
218
226
|
* TRANSPILE *
|
|
219
227
|
* ====================================================================== */
|
|
@@ -245,7 +253,7 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
245
253
|
return merge([
|
|
246
254
|
this._find_sources(),
|
|
247
255
|
this._find_types(),
|
|
248
|
-
this.
|
|
256
|
+
this._find_extra_types(),
|
|
249
257
|
]).tsc('tsconfig.json', {
|
|
250
258
|
noEmit: false,
|
|
251
259
|
rootDir: this.sourceDir,
|
|
@@ -256,7 +264,7 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
256
264
|
},
|
|
257
265
|
|
|
258
266
|
/** Copy all resources coming alongside our sources */
|
|
259
|
-
|
|
267
|
+
copy_resources(): Pipe {
|
|
260
268
|
return merge([
|
|
261
269
|
this._find_resources(),
|
|
262
270
|
this._find_types(),
|
|
@@ -265,25 +273,27 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
265
273
|
|
|
266
274
|
/** Transpile all source code */
|
|
267
275
|
async transpile(): Promise<Pipe> {
|
|
268
|
-
|
|
276
|
+
emitBanner('Transpiling source files')
|
|
269
277
|
|
|
270
278
|
if (isDirectory(this.destDir)) await rmrf(this.destDir)
|
|
271
279
|
|
|
272
|
-
|
|
280
|
+
const result = await merge([
|
|
273
281
|
_cjsTranspile ? this.transpile_cjs() : noop(),
|
|
274
282
|
_esmTranspile ? this.transpile_esm() : noop(),
|
|
275
283
|
this.transpile_types(),
|
|
276
|
-
this.
|
|
284
|
+
this.copy_resources(),
|
|
277
285
|
])
|
|
286
|
+
|
|
287
|
+
return result
|
|
278
288
|
},
|
|
279
289
|
|
|
280
290
|
/* ====================================================================== *
|
|
281
|
-
* TEST
|
|
291
|
+
* TEST & COVERAGE *
|
|
282
292
|
* ====================================================================== */
|
|
283
293
|
|
|
284
|
-
/** Run
|
|
294
|
+
/** Run tests */
|
|
285
295
|
async test(): Promise<void> {
|
|
286
|
-
|
|
296
|
+
emitBanner('Running tests')
|
|
287
297
|
|
|
288
298
|
if (_coverage && isDirectory(this.coverageDataDir)) await rmrf(this.coverageDataDir)
|
|
289
299
|
|
|
@@ -292,16 +302,17 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
292
302
|
.jasmine({ coverageDir: _coverage ? this.coverageDataDir : undefined })
|
|
293
303
|
},
|
|
294
304
|
|
|
295
|
-
/**
|
|
305
|
+
/** Ensure tests have run and generate a coverage report */
|
|
296
306
|
async coverage(): Promise<Pipe> {
|
|
307
|
+
let coveragePipe: Pipe
|
|
308
|
+
|
|
297
309
|
// Capture error from running tests, but always produce coverage
|
|
298
|
-
let files: Files
|
|
299
310
|
try {
|
|
300
311
|
await this.test()
|
|
301
312
|
} finally {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
313
|
+
emitBanner('Preparing coverage report')
|
|
314
|
+
|
|
315
|
+
coveragePipe = this._find_sources()
|
|
305
316
|
.coverage(this.coverageDataDir, {
|
|
306
317
|
reportDir: this.coverageDir,
|
|
307
318
|
minimumCoverage: _minimumCoverage,
|
|
@@ -311,20 +322,19 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
311
322
|
})
|
|
312
323
|
}
|
|
313
324
|
|
|
314
|
-
//
|
|
315
|
-
return
|
|
325
|
+
// If the tests didn't throw, return the coverage
|
|
326
|
+
return coveragePipe
|
|
316
327
|
},
|
|
317
328
|
|
|
318
|
-
|
|
329
|
+
/* ====================================================================== *
|
|
330
|
+
* LINTING *
|
|
331
|
+
* ====================================================================== */
|
|
332
|
+
|
|
333
|
+
/** Lint all sources */
|
|
319
334
|
async lint(): Promise<void> {
|
|
320
|
-
|
|
335
|
+
emitBanner('Linting sources')
|
|
321
336
|
|
|
322
|
-
await
|
|
323
|
-
this._find_sources(),
|
|
324
|
-
this._find_tests(),
|
|
325
|
-
this._find_types(),
|
|
326
|
-
this._find_extras(),
|
|
327
|
-
]).eslint()
|
|
337
|
+
await this._find_lint_sources().eslint()
|
|
328
338
|
},
|
|
329
339
|
|
|
330
340
|
/* ====================================================================== *
|
|
@@ -335,7 +345,7 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
335
345
|
async exports(): Promise<Pipe> {
|
|
336
346
|
const files = await this.transpile()
|
|
337
347
|
|
|
338
|
-
|
|
348
|
+
emitBanner('Updating exports in "package.json"')
|
|
339
349
|
|
|
340
350
|
return merge([ files ])
|
|
341
351
|
.filter(this.exportsGlob, { directory: this.destDir, ignore: '**/*.map' })
|
|
@@ -348,12 +358,12 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
348
358
|
},
|
|
349
359
|
|
|
350
360
|
/* ====================================================================== *
|
|
351
|
-
*
|
|
361
|
+
* ALL: DO EVERYTHING *
|
|
352
362
|
* ====================================================================== */
|
|
353
363
|
|
|
354
364
|
/* coverage ignore next */
|
|
355
|
-
/** Build everything */
|
|
356
|
-
async
|
|
365
|
+
/** Build everything. */
|
|
366
|
+
async all(): Promise<void> {
|
|
357
367
|
if (_parallelize) {
|
|
358
368
|
await Promise.all([
|
|
359
369
|
this.transpile(),
|
|
@@ -365,14 +375,28 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
365
375
|
await this.coverage() // implies "test"
|
|
366
376
|
await this.lint()
|
|
367
377
|
}
|
|
368
|
-
|
|
378
|
+
},
|
|
379
|
+
|
|
380
|
+
/* ====================================================================== *
|
|
381
|
+
* DEFAULT: DO EVERYTHING *
|
|
382
|
+
* ====================================================================== */
|
|
383
|
+
|
|
384
|
+
/* coverage ignore next */
|
|
385
|
+
/**
|
|
386
|
+
* Default task (simply invokes `this._all()`).
|
|
387
|
+
*
|
|
388
|
+
* Override this and invoke `this._all()` to inject tasks _before_ or
|
|
389
|
+
* _after_ the normal build execution.
|
|
390
|
+
*/
|
|
391
|
+
async default(): Promise<void> {
|
|
392
|
+
await this.all()
|
|
369
393
|
},
|
|
370
394
|
})
|
|
371
395
|
}
|
|
372
396
|
|
|
373
397
|
/* coverage ignore next */
|
|
374
398
|
/* Leave this at the _end_ of the file, unicode messes up sitemaps... */
|
|
375
|
-
function
|
|
399
|
+
export function banner(message: string): void {
|
|
376
400
|
log.notice([
|
|
377
401
|
'', $gry(`\u2554${''.padStart(60, '\u2550')}\u2557`),
|
|
378
402
|
`${$gry('\u2551')} ${$wht(message.padEnd(58, ' '))} ${$gry('\u2551')}`,
|