@plugjs/build 0.1.0 → 0.2.1

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/build.mjs DELETED
@@ -1,154 +0,0 @@
1
- // build.ts
2
- import "@plugjs/cov8";
3
- import "@plugjs/eslint";
4
- import "@plugjs/jasmine";
5
- import "@plugjs/typescript";
6
- import {
7
- build,
8
- find,
9
- fixExtensions,
10
- isDirectory,
11
- log,
12
- merge,
13
- noop,
14
- rmrf
15
- } from "@plugjs/plug";
16
- var esbuildDefaults = {
17
- platform: "node",
18
- sourcemap: "linked",
19
- sourcesContent: false,
20
- plugins: [fixExtensions()]
21
- };
22
- function tasks(options = {}) {
23
- const {
24
- sourceDir = "src",
25
- destDir = "dist",
26
- testDir = "test",
27
- coverageDir = "coverage",
28
- coverageDataDir = ".coverage-data",
29
- extraTypesDir = "types",
30
- testGlob = "**/*.test.ts",
31
- disableTests = false,
32
- disableCoverage = false,
33
- disableLint = false,
34
- minimumCoverage = 100,
35
- minimumFileCoverage = 100,
36
- optimalCoverage = void 0,
37
- optimalFileCoverage = void 0,
38
- esbuildOptions = {}
39
- } = options;
40
- const esbuildMergedOptions = Object.assign({}, esbuildDefaults, esbuildOptions);
41
- return build({
42
- find_sources_cts() {
43
- return find("**/*.(c)?ts", { directory: sourceDir, ignore: "**/*.d.ts" });
44
- },
45
- find_sources_mts() {
46
- return find("**/*.(m)?ts", { directory: sourceDir, ignore: "**/*.d.ts" });
47
- },
48
- find_sources() {
49
- return merge([this.find_sources_cts(), this.find_sources_mts()]);
50
- },
51
- find_types() {
52
- return find("**/*.d.ts", { directory: sourceDir });
53
- },
54
- find_extras() {
55
- if (!isDirectory(extraTypesDir))
56
- return noop();
57
- return find("**/*.d.ts", { directory: extraTypesDir });
58
- },
59
- find_resources() {
60
- return find("**/*", { directory: sourceDir, ignore: "**/*.([mt])?ts" });
61
- },
62
- find_tests() {
63
- return find(testGlob, { directory: testDir, ignore: "**/*.d.ts" });
64
- },
65
- transpile_cjs() {
66
- return this.find_sources_cts().esbuild({
67
- ...esbuildMergedOptions,
68
- format: "cjs",
69
- outdir: destDir,
70
- outExtension: { ".js": ".cjs" }
71
- });
72
- },
73
- transpile_esm() {
74
- return this.find_sources_mts().esbuild({
75
- ...esbuildMergedOptions,
76
- format: "esm",
77
- outdir: destDir,
78
- outExtension: { ".js": ".mjs" }
79
- });
80
- },
81
- transpile_types() {
82
- return merge([
83
- this.find_sources(),
84
- this.find_types(),
85
- this.find_extras()
86
- ]).tsc("tsconfig.json", {
87
- noEmit: false,
88
- rootDir: sourceDir,
89
- declaration: true,
90
- emitDeclarationOnly: true,
91
- outDir: destDir
92
- });
93
- },
94
- transpile_resources() {
95
- return merge([
96
- this.find_resources(),
97
- this.find_types()
98
- ]).copy(destDir);
99
- },
100
- transpile() {
101
- return merge([
102
- this.transpile_cjs(),
103
- this.transpile_esm(),
104
- this.transpile_types(),
105
- this.transpile_resources()
106
- ]);
107
- },
108
- async test() {
109
- if (disableTests) {
110
- return void log.warn("Testing disabled");
111
- }
112
- if (isDirectory(coverageDataDir))
113
- await rmrf(coverageDataDir);
114
- await this.find_tests().jasmine({ coverageDir: coverageDataDir });
115
- },
116
- async coverage() {
117
- if (disableTests || disableCoverage) {
118
- return void log.warn("Coverage disabled");
119
- }
120
- await this.test().finally(() => this.find_sources().coverage(coverageDataDir, {
121
- reportDir: coverageDir,
122
- minimumCoverage,
123
- minimumFileCoverage,
124
- optimalCoverage,
125
- optimalFileCoverage
126
- }));
127
- },
128
- async lint() {
129
- if (disableLint) {
130
- return void log.warn("Linting disabled");
131
- }
132
- await merge([
133
- this.find_sources(),
134
- this.find_tests(),
135
- this.find_types(),
136
- this.find_extras()
137
- ]).eslint();
138
- },
139
- async default() {
140
- if (isDirectory(destDir))
141
- await rmrf(destDir);
142
- await Promise.all([
143
- this.test(),
144
- this.coverage(),
145
- this.lint(),
146
- this.transpile()
147
- ]);
148
- }
149
- });
150
- }
151
- export {
152
- tasks
153
- };
154
- //# sourceMappingURL=build.mjs.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/build.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
package/src/build.ts DELETED
@@ -1,276 +0,0 @@
1
- import '@plugjs/cov8'
2
- import '@plugjs/eslint'
3
- import '@plugjs/jasmine'
4
- import '@plugjs/typescript'
5
- import {
6
- build,
7
- find,
8
- fixExtensions,
9
- isDirectory,
10
- log,
11
- merge,
12
- noop,
13
- rmrf,
14
- } from '@plugjs/plug'
15
-
16
- import type { ESBuildOptions, Pipe } from '@plugjs/plug'
17
-
18
- /** Shared ESBuild options */
19
- const esbuildDefaults: ESBuildOptions = {
20
- platform: 'node',
21
- sourcemap: 'linked',
22
- sourcesContent: false,
23
- plugins: [ fixExtensions() ],
24
- }
25
-
26
- /** Options for creating our shared build file */
27
- export interface TasksOptions {
28
- /* ======================================================================== *
29
- * DIRECTORIES *
30
- * ======================================================================== */
31
-
32
- /** The directory for the original sources (default: `src`) */
33
- sourceDir?: string,
34
- /** The destination directory of the transpiled sources (default: `dist`) */
35
- destDir?: string,
36
- /** The directory for the test files (default: `test`) */
37
- testDir?: string,
38
- /** The directory for the coverage report (default: `coverage`) */
39
- coverageDir?: string,
40
- /** The directory for the coverage data (default: `.coverage-data`) */
41
- coverageDataDir?: string,
42
- /** A directory containing extra types to use while transpiling (default: `types`) */
43
- extraTypesDir?: string,
44
-
45
- /* ======================================================================== *
46
- * OTHER OPTIONS *
47
- * ======================================================================== */
48
-
49
- /** A glob pattern matching all test files (default: `**∕*.test.ts`) */
50
- testGlob?: string,
51
- /** Whether to disable tests or not (defailt: `false`) */
52
- disableTests?: boolean,
53
- /** Whether to disable code coverage or not (defailt: `false`) */
54
- disableCoverage?: boolean,
55
- /** Whether to disable code linting or not (defailt: `false`) */
56
- disableLint?: boolean,
57
-
58
- /** Minimum overall coverage percentage (default: `100`) */
59
- minimumCoverage?: number,
60
- /** Minimum per-file coverage percentage (default: `100`) */
61
- minimumFileCoverage?: number,
62
- /** Optimal overall coverage percentage (default: _none_) */
63
- optimalCoverage?: number,
64
- /** Optimal per-file coverage percentage (default: _none_) */
65
- optimalFileCoverage?: number,
66
-
67
- /**
68
- * ESBuild compilation options
69
- *
70
- * Default:
71
- *
72
- * ```
73
- * {
74
- * platform: 'node',
75
- * sourcemap: 'linked',
76
- * sourcesContent: false,
77
- * plugins: [ fixExtensions() ],
78
- * }
79
- * ```
80
- */
81
- esbuildOptions?: ESBuildOptions,
82
- }
83
-
84
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
85
- export function tasks(options: TasksOptions = {}) {
86
- const {
87
- sourceDir = 'src',
88
- destDir = 'dist',
89
- testDir = 'test',
90
- coverageDir = 'coverage',
91
- coverageDataDir = '.coverage-data',
92
- extraTypesDir = 'types',
93
-
94
- testGlob = '**/*.test.ts',
95
- disableTests = false,
96
- disableCoverage = false,
97
- disableLint = false,
98
-
99
- minimumCoverage = 100,
100
- minimumFileCoverage = 100,
101
- optimalCoverage = undefined,
102
- optimalFileCoverage = undefined,
103
-
104
- esbuildOptions = {},
105
- } = options
106
-
107
- // Merge esbuild defaults with specified options
108
- const esbuildMergedOptions = Object.assign({}, esbuildDefaults, esbuildOptions)
109
-
110
- return build({
111
- /* ====================================================================== *
112
- * SOURCES STRUCTURE *
113
- * ====================================================================== */
114
-
115
- /** Find all CommonJS source files (`*.cts`) */
116
- find_sources_cts(): Pipe {
117
- return find('**/*.(c)?ts', { directory: sourceDir, ignore: '**/*.d.ts' })
118
- },
119
-
120
- /** Find all EcmaScript Module source files (`*.mts`) */
121
- find_sources_mts(): Pipe {
122
- return find('**/*.(m)?ts', { directory: sourceDir, ignore: '**/*.d.ts' })
123
- },
124
-
125
- /** Find all typescript source files (`*.ts`, `*.mts` and `*.cts`) */
126
- find_sources(): Pipe {
127
- return merge([ this.find_sources_cts(), this.find_sources_mts() ])
128
- },
129
-
130
- /** Find all types definition files within sources */
131
- find_types(): Pipe {
132
- return find('**/*.d.ts', { directory: sourceDir })
133
- },
134
-
135
- /** Find all types definition files within sources */
136
- find_extras(): Pipe {
137
- if (! isDirectory(extraTypesDir)) return noop()
138
- return find('**/*.d.ts', { directory: extraTypesDir })
139
- },
140
-
141
-
142
- /** Find all resource files (non-typescript files) within sources */
143
- find_resources(): Pipe {
144
- return find('**/*', { directory: sourceDir, ignore: '**/*.([mt])?ts' })
145
- },
146
-
147
- /** Find all test source files */
148
- find_tests(): Pipe {
149
- return find(testGlob, { directory: testDir, ignore: '**/*.d.ts' })
150
- },
151
-
152
- /* ====================================================================== *
153
- * TRANSPILE *
154
- * ====================================================================== */
155
-
156
- /** Transpile to CJS */
157
- transpile_cjs(): Pipe {
158
- return this.find_sources_cts()
159
- .esbuild({
160
- ...esbuildMergedOptions,
161
- format: 'cjs',
162
- outdir: destDir,
163
- outExtension: { '.js': '.cjs' },
164
- })
165
- },
166
-
167
- /** Transpile to ESM */
168
- transpile_esm(): Pipe {
169
- return this.find_sources_mts()
170
- .esbuild({
171
- ...esbuildMergedOptions,
172
- format: 'esm',
173
- outdir: destDir,
174
- outExtension: { '.js': '.mjs' },
175
- })
176
- },
177
-
178
- /** Generate all .d.ts files */
179
- transpile_types(): Pipe {
180
- return merge([
181
- this.find_sources(),
182
- this.find_types(),
183
- this.find_extras(),
184
- ]).tsc('tsconfig.json', {
185
- noEmit: false,
186
- rootDir: sourceDir,
187
- declaration: true,
188
- emitDeclarationOnly: true,
189
- outDir: destDir,
190
- })
191
- },
192
-
193
- /** Copy all resources coming alongside our sources */
194
- transpile_resources(): Pipe {
195
- return merge([
196
- this.find_resources(),
197
- this.find_types(),
198
- ]).copy(destDir)
199
- },
200
-
201
- /** Transpile all source code */
202
- transpile(): Pipe {
203
- return merge([
204
- this.transpile_cjs(),
205
- this.transpile_esm(),
206
- this.transpile_types(),
207
- this.transpile_resources(),
208
- ])
209
- },
210
-
211
- /* ====================================================================== *
212
- * TEST, COVERAGE & LINTING *
213
- * ====================================================================== */
214
-
215
- /** Run test and emit coverage data */
216
- async test(): Promise<void> {
217
- if (disableTests) {
218
- return void log.warn('Testing disabled')
219
- }
220
-
221
- if (isDirectory(coverageDataDir)) await rmrf(coverageDataDir)
222
-
223
- await this
224
- .find_tests()
225
- .jasmine({ coverageDir: coverageDataDir })
226
- },
227
-
228
- /** Run tests (always) and generate a coverage report */
229
- async coverage(): Promise<void> {
230
- if (disableTests || disableCoverage) {
231
- return void log.warn('Coverage disabled')
232
- }
233
-
234
- await this
235
- .test()
236
- .finally(() => this.find_sources()
237
- .coverage(coverageDataDir, {
238
- reportDir: coverageDir,
239
- minimumCoverage,
240
- minimumFileCoverage,
241
- optimalCoverage,
242
- optimalFileCoverage,
243
- }))
244
- },
245
-
246
- /** Run test and emit coverage data */
247
- async lint(): Promise<void> {
248
- if (disableLint) {
249
- return void log.warn('Linting disabled')
250
- }
251
-
252
- await merge([
253
- this.find_sources(),
254
- this.find_tests(),
255
- this.find_types(),
256
- this.find_extras(),
257
- ]).eslint()
258
- },
259
-
260
- /* ====================================================================== *
261
- * DEFAULT: DO EVERYTHING *
262
- * ====================================================================== */
263
-
264
- /** Build everything */
265
- async default(): Promise<void> {
266
- if (isDirectory(destDir)) await rmrf(destDir)
267
-
268
- await Promise.all([
269
- this.test(),
270
- this.coverage(),
271
- this.lint(),
272
- this.transpile(),
273
- ])
274
- },
275
- })
276
- }
File without changes
File without changes
File without changes