@plugjs/build 0.2.1 → 0.2.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/dist/index.cjs +79 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +21 -7
- package/dist/index.mjs +78 -31
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
- package/src/index.ts +92 -39
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,61 @@ 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 */
|
|
196
|
+
async test_cjs() {
|
|
197
|
+
emitBanner("Running tests (CommonJS)");
|
|
198
|
+
const forceType = process.env.__TS_LOADER_FORCE_TYPE;
|
|
199
|
+
try {
|
|
200
|
+
process.env.__TS_LOADER_FORCE_TYPE = "commonjs";
|
|
201
|
+
await this._find_tests().jasmine({ coverageDir: _coverage ? this.coverageDataDir : void 0 });
|
|
202
|
+
} finally {
|
|
203
|
+
delete process.env.__TS_LOADER_FORCE_TYPE;
|
|
204
|
+
if (forceType)
|
|
205
|
+
process.env.__TS_LOADER_FORCE_TYPE = forceType;
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
/** Run tests */
|
|
209
|
+
async test_esm() {
|
|
210
|
+
emitBanner("Running tests (ES Modules)");
|
|
211
|
+
const forceType = process.env.__TS_LOADER_FORCE_TYPE;
|
|
212
|
+
try {
|
|
213
|
+
process.env.__TS_LOADER_FORCE_TYPE = "module";
|
|
214
|
+
await this._find_tests().jasmine({ coverageDir: _coverage ? this.coverageDataDir : void 0 });
|
|
215
|
+
} finally {
|
|
216
|
+
delete process.env.__TS_LOADER_FORCE_TYPE;
|
|
217
|
+
if (forceType)
|
|
218
|
+
process.env.__TS_LOADER_FORCE_TYPE = forceType;
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
/** Run tests */
|
|
185
222
|
async test() {
|
|
186
|
-
banner("Running tests");
|
|
187
223
|
if (_coverage && (0, import_plug.isDirectory)(this.coverageDataDir))
|
|
188
224
|
await (0, import_plug.rmrf)(this.coverageDataDir);
|
|
189
|
-
await this.
|
|
225
|
+
await this.test_cjs();
|
|
226
|
+
await this.test_esm();
|
|
190
227
|
},
|
|
191
|
-
/**
|
|
228
|
+
/** Ensure tests have run and generate a coverage report */
|
|
192
229
|
async coverage() {
|
|
193
|
-
let
|
|
230
|
+
let coveragePipe;
|
|
194
231
|
try {
|
|
195
232
|
await this.test();
|
|
196
233
|
} finally {
|
|
197
|
-
|
|
198
|
-
|
|
234
|
+
emitBanner("Preparing coverage report");
|
|
235
|
+
coveragePipe = this._find_sources().coverage(this.coverageDataDir, {
|
|
199
236
|
reportDir: this.coverageDir,
|
|
200
237
|
minimumCoverage: _minimumCoverage,
|
|
201
238
|
minimumFileCoverage: _minimumFileCoverage,
|
|
@@ -203,17 +240,15 @@ function tasks(options = {}) {
|
|
|
203
240
|
optimalFileCoverage: _optimalFileCoverage
|
|
204
241
|
});
|
|
205
242
|
}
|
|
206
|
-
return
|
|
243
|
+
return coveragePipe;
|
|
207
244
|
},
|
|
208
|
-
|
|
245
|
+
/* ====================================================================== *
|
|
246
|
+
* LINTING *
|
|
247
|
+
* ====================================================================== */
|
|
248
|
+
/** Lint all sources */
|
|
209
249
|
async lint() {
|
|
210
|
-
|
|
211
|
-
await (
|
|
212
|
-
this._find_sources(),
|
|
213
|
-
this._find_tests(),
|
|
214
|
-
this._find_types(),
|
|
215
|
-
this._find_extras()
|
|
216
|
-
]).eslint();
|
|
250
|
+
emitBanner("Linting sources");
|
|
251
|
+
await this._find_lint_sources().eslint();
|
|
217
252
|
},
|
|
218
253
|
/* ====================================================================== *
|
|
219
254
|
* PACKAGE.JSON EXPORTS *
|
|
@@ -221,7 +256,7 @@ function tasks(options = {}) {
|
|
|
221
256
|
/** Inject `exports` into the `package.json` file */
|
|
222
257
|
async exports() {
|
|
223
258
|
const files = await this.transpile();
|
|
224
|
-
|
|
259
|
+
emitBanner('Updating exports in "package.json"');
|
|
225
260
|
return (0, import_plug.merge)([files]).filter(this.exportsGlob, { directory: this.destDir, ignore: "**/*.map" }).exports({
|
|
226
261
|
cjsExtension: this.cjsExtension,
|
|
227
262
|
esmExtension: this.esmExtension,
|
|
@@ -230,11 +265,11 @@ function tasks(options = {}) {
|
|
|
230
265
|
});
|
|
231
266
|
},
|
|
232
267
|
/* ====================================================================== *
|
|
233
|
-
*
|
|
268
|
+
* ALL: DO EVERYTHING *
|
|
234
269
|
* ====================================================================== */
|
|
235
270
|
/* coverage ignore next */
|
|
236
|
-
/** Build everything */
|
|
237
|
-
async
|
|
271
|
+
/** Build everything. */
|
|
272
|
+
async all() {
|
|
238
273
|
if (_parallelize) {
|
|
239
274
|
await Promise.all([
|
|
240
275
|
this.transpile(),
|
|
@@ -247,11 +282,23 @@ function tasks(options = {}) {
|
|
|
247
282
|
await this.coverage();
|
|
248
283
|
await this.lint();
|
|
249
284
|
}
|
|
250
|
-
|
|
285
|
+
},
|
|
286
|
+
/* ====================================================================== *
|
|
287
|
+
* DEFAULT: DO EVERYTHING *
|
|
288
|
+
* ====================================================================== */
|
|
289
|
+
/* coverage ignore next */
|
|
290
|
+
/**
|
|
291
|
+
* Default task (simply invokes `this._all()`).
|
|
292
|
+
*
|
|
293
|
+
* Override this and invoke `this._all()` to inject tasks _before_ or
|
|
294
|
+
* _after_ the normal build execution.
|
|
295
|
+
*/
|
|
296
|
+
async default() {
|
|
297
|
+
await this.all();
|
|
251
298
|
}
|
|
252
299
|
});
|
|
253
300
|
}
|
|
254
|
-
function
|
|
301
|
+
function banner(message) {
|
|
255
302
|
import_plug.log.notice([
|
|
256
303
|
"",
|
|
257
304
|
(0, import_plug.$gry)(`\u2554${"".padStart(60, "\u2550")}\u2557`),
|
|
@@ -262,6 +309,7 @@ function emitBanner(message) {
|
|
|
262
309
|
}
|
|
263
310
|
// Annotate the CommonJS export names for ESM import in node:
|
|
264
311
|
0 && (module.exports = {
|
|
312
|
+
banner,
|
|
265
313
|
tasks
|
|
266
314
|
});
|
|
267
315
|
//# 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,29 @@ 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 */
|
|
119
|
+
test_cjs(): Promise<void>;
|
|
120
|
+
/** Run tests */
|
|
121
|
+
test_esm(): Promise<void>;
|
|
122
|
+
/** Run tests */
|
|
117
123
|
test(): Promise<void>;
|
|
118
|
-
/**
|
|
124
|
+
/** Ensure tests have run and generate a coverage report */
|
|
119
125
|
coverage(): Promise<Pipe>;
|
|
120
|
-
/**
|
|
126
|
+
/** Lint all sources */
|
|
121
127
|
lint(): Promise<void>;
|
|
122
128
|
/** Inject `exports` into the `package.json` file */
|
|
123
129
|
exports(): Promise<Pipe>;
|
|
124
|
-
/** Build everything */
|
|
130
|
+
/** Build everything. */
|
|
131
|
+
all(): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* Default task (simply invokes `this._all()`).
|
|
134
|
+
*
|
|
135
|
+
* Override this and invoke `this._all()` to inject tasks _before_ or
|
|
136
|
+
* _after_ the normal build execution.
|
|
137
|
+
*/
|
|
125
138
|
default(): Promise<void>;
|
|
126
139
|
}>;
|
|
140
|
+
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,61 @@ 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 */
|
|
181
|
+
async test_cjs() {
|
|
182
|
+
emitBanner("Running tests (CommonJS)");
|
|
183
|
+
const forceType = process.env.__TS_LOADER_FORCE_TYPE;
|
|
184
|
+
try {
|
|
185
|
+
process.env.__TS_LOADER_FORCE_TYPE = "commonjs";
|
|
186
|
+
await this._find_tests().jasmine({ coverageDir: _coverage ? this.coverageDataDir : void 0 });
|
|
187
|
+
} finally {
|
|
188
|
+
delete process.env.__TS_LOADER_FORCE_TYPE;
|
|
189
|
+
if (forceType)
|
|
190
|
+
process.env.__TS_LOADER_FORCE_TYPE = forceType;
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
/** Run tests */
|
|
194
|
+
async test_esm() {
|
|
195
|
+
emitBanner("Running tests (ES Modules)");
|
|
196
|
+
const forceType = process.env.__TS_LOADER_FORCE_TYPE;
|
|
197
|
+
try {
|
|
198
|
+
process.env.__TS_LOADER_FORCE_TYPE = "module";
|
|
199
|
+
await this._find_tests().jasmine({ coverageDir: _coverage ? this.coverageDataDir : void 0 });
|
|
200
|
+
} finally {
|
|
201
|
+
delete process.env.__TS_LOADER_FORCE_TYPE;
|
|
202
|
+
if (forceType)
|
|
203
|
+
process.env.__TS_LOADER_FORCE_TYPE = forceType;
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
/** Run tests */
|
|
171
207
|
async test() {
|
|
172
|
-
banner("Running tests");
|
|
173
208
|
if (_coverage && isDirectory(this.coverageDataDir))
|
|
174
209
|
await rmrf(this.coverageDataDir);
|
|
175
|
-
await this.
|
|
210
|
+
await this.test_cjs();
|
|
211
|
+
await this.test_esm();
|
|
176
212
|
},
|
|
177
|
-
/**
|
|
213
|
+
/** Ensure tests have run and generate a coverage report */
|
|
178
214
|
async coverage() {
|
|
179
|
-
let
|
|
215
|
+
let coveragePipe;
|
|
180
216
|
try {
|
|
181
217
|
await this.test();
|
|
182
218
|
} finally {
|
|
183
|
-
|
|
184
|
-
|
|
219
|
+
emitBanner("Preparing coverage report");
|
|
220
|
+
coveragePipe = this._find_sources().coverage(this.coverageDataDir, {
|
|
185
221
|
reportDir: this.coverageDir,
|
|
186
222
|
minimumCoverage: _minimumCoverage,
|
|
187
223
|
minimumFileCoverage: _minimumFileCoverage,
|
|
@@ -189,17 +225,15 @@ function tasks(options = {}) {
|
|
|
189
225
|
optimalFileCoverage: _optimalFileCoverage
|
|
190
226
|
});
|
|
191
227
|
}
|
|
192
|
-
return
|
|
228
|
+
return coveragePipe;
|
|
193
229
|
},
|
|
194
|
-
|
|
230
|
+
/* ====================================================================== *
|
|
231
|
+
* LINTING *
|
|
232
|
+
* ====================================================================== */
|
|
233
|
+
/** Lint all sources */
|
|
195
234
|
async lint() {
|
|
196
|
-
|
|
197
|
-
await
|
|
198
|
-
this._find_sources(),
|
|
199
|
-
this._find_tests(),
|
|
200
|
-
this._find_types(),
|
|
201
|
-
this._find_extras()
|
|
202
|
-
]).eslint();
|
|
235
|
+
emitBanner("Linting sources");
|
|
236
|
+
await this._find_lint_sources().eslint();
|
|
203
237
|
},
|
|
204
238
|
/* ====================================================================== *
|
|
205
239
|
* PACKAGE.JSON EXPORTS *
|
|
@@ -207,7 +241,7 @@ function tasks(options = {}) {
|
|
|
207
241
|
/** Inject `exports` into the `package.json` file */
|
|
208
242
|
async exports() {
|
|
209
243
|
const files = await this.transpile();
|
|
210
|
-
|
|
244
|
+
emitBanner('Updating exports in "package.json"');
|
|
211
245
|
return merge([files]).filter(this.exportsGlob, { directory: this.destDir, ignore: "**/*.map" }).exports({
|
|
212
246
|
cjsExtension: this.cjsExtension,
|
|
213
247
|
esmExtension: this.esmExtension,
|
|
@@ -216,11 +250,11 @@ function tasks(options = {}) {
|
|
|
216
250
|
});
|
|
217
251
|
},
|
|
218
252
|
/* ====================================================================== *
|
|
219
|
-
*
|
|
253
|
+
* ALL: DO EVERYTHING *
|
|
220
254
|
* ====================================================================== */
|
|
221
255
|
/* coverage ignore next */
|
|
222
|
-
/** Build everything */
|
|
223
|
-
async
|
|
256
|
+
/** Build everything. */
|
|
257
|
+
async all() {
|
|
224
258
|
if (_parallelize) {
|
|
225
259
|
await Promise.all([
|
|
226
260
|
this.transpile(),
|
|
@@ -233,11 +267,23 @@ function tasks(options = {}) {
|
|
|
233
267
|
await this.coverage();
|
|
234
268
|
await this.lint();
|
|
235
269
|
}
|
|
236
|
-
|
|
270
|
+
},
|
|
271
|
+
/* ====================================================================== *
|
|
272
|
+
* DEFAULT: DO EVERYTHING *
|
|
273
|
+
* ====================================================================== */
|
|
274
|
+
/* coverage ignore next */
|
|
275
|
+
/**
|
|
276
|
+
* Default task (simply invokes `this._all()`).
|
|
277
|
+
*
|
|
278
|
+
* Override this and invoke `this._all()` to inject tasks _before_ or
|
|
279
|
+
* _after_ the normal build execution.
|
|
280
|
+
*/
|
|
281
|
+
async default() {
|
|
282
|
+
await this.all();
|
|
237
283
|
}
|
|
238
284
|
});
|
|
239
285
|
}
|
|
240
|
-
function
|
|
286
|
+
function banner(message) {
|
|
241
287
|
log.notice([
|
|
242
288
|
"",
|
|
243
289
|
$gry(`\u2554${"".padStart(60, "\u2550")}\u2557`),
|
|
@@ -247,6 +293,7 @@ function emitBanner(message) {
|
|
|
247
293
|
].join("\n"));
|
|
248
294
|
}
|
|
249
295
|
export {
|
|
296
|
+
banner,
|
|
250
297
|
tasks
|
|
251
298
|
};
|
|
252
299
|
//# 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.3",
|
|
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.2",
|
|
33
|
+
"@plugjs/eslint": "^0.2.2",
|
|
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.2",
|
|
36
|
+
"@plugjs/plug": "^0.2.2",
|
|
37
|
+
"@plugjs/typescript": "^0.2.2"
|
|
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,43 +273,75 @@ 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
|
|
285
|
-
async
|
|
286
|
-
|
|
294
|
+
/** Run tests */
|
|
295
|
+
async test_cjs(): Promise<void> {
|
|
296
|
+
emitBanner('Running tests (CommonJS)')
|
|
287
297
|
|
|
298
|
+
const forceType = process.env.__TS_LOADER_FORCE_TYPE
|
|
299
|
+
try {
|
|
300
|
+
process.env.__TS_LOADER_FORCE_TYPE = 'commonjs'
|
|
301
|
+
await this
|
|
302
|
+
._find_tests()
|
|
303
|
+
.jasmine({ coverageDir: _coverage ? this.coverageDataDir : undefined })
|
|
304
|
+
} finally {
|
|
305
|
+
delete process.env.__TS_LOADER_FORCE_TYPE
|
|
306
|
+
if (forceType) process.env.__TS_LOADER_FORCE_TYPE = forceType
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
|
|
310
|
+
/** Run tests */
|
|
311
|
+
async test_esm(): Promise<void> {
|
|
312
|
+
emitBanner('Running tests (ES Modules)')
|
|
313
|
+
|
|
314
|
+
const forceType = process.env.__TS_LOADER_FORCE_TYPE
|
|
315
|
+
try {
|
|
316
|
+
process.env.__TS_LOADER_FORCE_TYPE = 'module'
|
|
317
|
+
await this
|
|
318
|
+
._find_tests()
|
|
319
|
+
.jasmine({ coverageDir: _coverage ? this.coverageDataDir : undefined })
|
|
320
|
+
} finally {
|
|
321
|
+
delete process.env.__TS_LOADER_FORCE_TYPE
|
|
322
|
+
if (forceType) process.env.__TS_LOADER_FORCE_TYPE = forceType
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
|
|
326
|
+
/** Run tests */
|
|
327
|
+
async test(): Promise<void> {
|
|
288
328
|
if (_coverage && isDirectory(this.coverageDataDir)) await rmrf(this.coverageDataDir)
|
|
289
329
|
|
|
290
|
-
await this
|
|
291
|
-
|
|
292
|
-
.jasmine({ coverageDir: _coverage ? this.coverageDataDir : undefined })
|
|
330
|
+
await this.test_cjs()
|
|
331
|
+
await this.test_esm()
|
|
293
332
|
},
|
|
294
333
|
|
|
295
|
-
/**
|
|
334
|
+
/** Ensure tests have run and generate a coverage report */
|
|
296
335
|
async coverage(): Promise<Pipe> {
|
|
336
|
+
let coveragePipe: Pipe
|
|
337
|
+
|
|
297
338
|
// Capture error from running tests, but always produce coverage
|
|
298
|
-
let files: Files
|
|
299
339
|
try {
|
|
300
340
|
await this.test()
|
|
301
341
|
} finally {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
342
|
+
emitBanner('Preparing coverage report')
|
|
343
|
+
|
|
344
|
+
coveragePipe = this._find_sources()
|
|
305
345
|
.coverage(this.coverageDataDir, {
|
|
306
346
|
reportDir: this.coverageDir,
|
|
307
347
|
minimumCoverage: _minimumCoverage,
|
|
@@ -311,20 +351,19 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
311
351
|
})
|
|
312
352
|
}
|
|
313
353
|
|
|
314
|
-
//
|
|
315
|
-
return
|
|
354
|
+
// If the tests didn't throw, return the coverage
|
|
355
|
+
return coveragePipe
|
|
316
356
|
},
|
|
317
357
|
|
|
318
|
-
|
|
358
|
+
/* ====================================================================== *
|
|
359
|
+
* LINTING *
|
|
360
|
+
* ====================================================================== */
|
|
361
|
+
|
|
362
|
+
/** Lint all sources */
|
|
319
363
|
async lint(): Promise<void> {
|
|
320
|
-
|
|
364
|
+
emitBanner('Linting sources')
|
|
321
365
|
|
|
322
|
-
await
|
|
323
|
-
this._find_sources(),
|
|
324
|
-
this._find_tests(),
|
|
325
|
-
this._find_types(),
|
|
326
|
-
this._find_extras(),
|
|
327
|
-
]).eslint()
|
|
366
|
+
await this._find_lint_sources().eslint()
|
|
328
367
|
},
|
|
329
368
|
|
|
330
369
|
/* ====================================================================== *
|
|
@@ -335,7 +374,7 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
335
374
|
async exports(): Promise<Pipe> {
|
|
336
375
|
const files = await this.transpile()
|
|
337
376
|
|
|
338
|
-
|
|
377
|
+
emitBanner('Updating exports in "package.json"')
|
|
339
378
|
|
|
340
379
|
return merge([ files ])
|
|
341
380
|
.filter(this.exportsGlob, { directory: this.destDir, ignore: '**/*.map' })
|
|
@@ -348,12 +387,12 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
348
387
|
},
|
|
349
388
|
|
|
350
389
|
/* ====================================================================== *
|
|
351
|
-
*
|
|
390
|
+
* ALL: DO EVERYTHING *
|
|
352
391
|
* ====================================================================== */
|
|
353
392
|
|
|
354
393
|
/* coverage ignore next */
|
|
355
|
-
/** Build everything */
|
|
356
|
-
async
|
|
394
|
+
/** Build everything. */
|
|
395
|
+
async all(): Promise<void> {
|
|
357
396
|
if (_parallelize) {
|
|
358
397
|
await Promise.all([
|
|
359
398
|
this.transpile(),
|
|
@@ -365,14 +404,28 @@ export function tasks(options: TasksOptions = {}) {
|
|
|
365
404
|
await this.coverage() // implies "test"
|
|
366
405
|
await this.lint()
|
|
367
406
|
}
|
|
368
|
-
|
|
407
|
+
},
|
|
408
|
+
|
|
409
|
+
/* ====================================================================== *
|
|
410
|
+
* DEFAULT: DO EVERYTHING *
|
|
411
|
+
* ====================================================================== */
|
|
412
|
+
|
|
413
|
+
/* coverage ignore next */
|
|
414
|
+
/**
|
|
415
|
+
* Default task (simply invokes `this._all()`).
|
|
416
|
+
*
|
|
417
|
+
* Override this and invoke `this._all()` to inject tasks _before_ or
|
|
418
|
+
* _after_ the normal build execution.
|
|
419
|
+
*/
|
|
420
|
+
async default(): Promise<void> {
|
|
421
|
+
await this.all()
|
|
369
422
|
},
|
|
370
423
|
})
|
|
371
424
|
}
|
|
372
425
|
|
|
373
426
|
/* coverage ignore next */
|
|
374
427
|
/* Leave this at the _end_ of the file, unicode messes up sitemaps... */
|
|
375
|
-
function
|
|
428
|
+
export function banner(message: string): void {
|
|
376
429
|
log.notice([
|
|
377
430
|
'', $gry(`\u2554${''.padStart(60, '\u2550')}\u2557`),
|
|
378
431
|
`${$gry('\u2551')} ${$wht(message.padEnd(58, ' '))} ${$gry('\u2551')}`,
|