@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/bootstrap.mjs +25 -11
- package/dist/bootstrap.mjs.map +1 -1
- package/dist/index.cjs +267 -0
- package/dist/index.cjs.map +6 -0
- package/dist/index.d.ts +126 -0
- package/dist/index.mjs +252 -0
- package/dist/index.mjs.map +6 -0
- package/package.json +22 -17
- package/resources/__dot_vscode/settings.json +3 -0
- package/src/bootstrap.mts +27 -10
- package/src/index.ts +381 -0
- package/dist/build.cjs +0 -170
- package/dist/build.cjs.map +0 -6
- package/dist/build.d.ts +0 -85
- package/dist/build.mjs +0 -154
- package/dist/build.mjs.map +0 -6
- package/src/build.ts +0 -276
- /package/resources/{.eslintignore → __dot_eslintignore} +0 -0
- /package/resources/{.eslintrc.cjs → __dot_eslintrc.cjs} +0 -0
- /package/resources/{.gitignore → __dot_gitignore} +0 -0
- /package/resources/test/{00-index.test.ts → index.test.ts} +0 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
// index.ts
|
|
2
|
+
import "@plugjs/cov8";
|
|
3
|
+
import "@plugjs/eslint";
|
|
4
|
+
import "@plugjs/jasmine";
|
|
5
|
+
import {
|
|
6
|
+
$gry,
|
|
7
|
+
$wht,
|
|
8
|
+
build,
|
|
9
|
+
find,
|
|
10
|
+
fixExtensions,
|
|
11
|
+
isDirectory,
|
|
12
|
+
log,
|
|
13
|
+
merge,
|
|
14
|
+
noop,
|
|
15
|
+
rmrf
|
|
16
|
+
} from "@plugjs/plug";
|
|
17
|
+
import "@plugjs/typescript";
|
|
18
|
+
export * from "@plugjs/plug";
|
|
19
|
+
var esbuildDefaults = {
|
|
20
|
+
platform: "node",
|
|
21
|
+
sourcemap: "linked",
|
|
22
|
+
sourcesContent: false,
|
|
23
|
+
plugins: [fixExtensions()]
|
|
24
|
+
};
|
|
25
|
+
function tasks(options = {}) {
|
|
26
|
+
const {
|
|
27
|
+
sourceDir: _sourceDir = "src",
|
|
28
|
+
destDir: _destDir = "dist",
|
|
29
|
+
testDir: _testDir = "test",
|
|
30
|
+
coverageDir: _coverageDir = "coverage",
|
|
31
|
+
coverageDataDir: _coverageDataDir = ".coverage-data",
|
|
32
|
+
extraTypesDir: _extraTypesDir = "types",
|
|
33
|
+
packageJson: _packageJson = "package.json",
|
|
34
|
+
outputPackageJson: _outputPackageJson = _packageJson,
|
|
35
|
+
cjsExtension: _cjsExtension = ".cjs",
|
|
36
|
+
esmExtension: _esmExtension = ".mjs",
|
|
37
|
+
cjsTranspile: _cjsTranspile = true,
|
|
38
|
+
esmTranspile: _esmTranspile = true,
|
|
39
|
+
parallelize: _parallelize = false,
|
|
40
|
+
banners: _banners = !_parallelize,
|
|
41
|
+
testGlob: _testGlob = "**/*.test.([cm])?ts",
|
|
42
|
+
exportsGlob: _exportsGlob = "index.*",
|
|
43
|
+
coverage: _coverage = true,
|
|
44
|
+
minimumCoverage: _minimumCoverage = 100,
|
|
45
|
+
minimumFileCoverage: _minimumFileCoverage = 100,
|
|
46
|
+
optimalCoverage: _optimalCoverage = void 0,
|
|
47
|
+
optimalFileCoverage: _optimalFileCoverage = void 0,
|
|
48
|
+
esbuildOptions: _esbuildOptions = {}
|
|
49
|
+
} = options;
|
|
50
|
+
const banner = _banners ? emitBanner : (...args) => void 0;
|
|
51
|
+
const esbuildMergedOptions = Object.assign({}, esbuildDefaults, _esbuildOptions);
|
|
52
|
+
return build({
|
|
53
|
+
/** The directory for the original sources (default: `src`) */
|
|
54
|
+
sourceDir: _sourceDir,
|
|
55
|
+
/** The destination directory of the transpiled sources (default: `dist`) */
|
|
56
|
+
destDir: _destDir,
|
|
57
|
+
/** The directory for the test files (default: `test`) */
|
|
58
|
+
testDir: _testDir,
|
|
59
|
+
/** The directory for the coverage report (default: `coverage`) */
|
|
60
|
+
coverageDir: _coverageDir,
|
|
61
|
+
/** The directory for the coverage data (default: `.coverage-data`) */
|
|
62
|
+
coverageDataDir: _coverageDataDir,
|
|
63
|
+
/** A directory containing extra types to use while transpiling (default: `types`) */
|
|
64
|
+
extraTypesDir: _extraTypesDir,
|
|
65
|
+
/** The source `package.json` file (default: `package.json`) */
|
|
66
|
+
packageJson: _packageJson,
|
|
67
|
+
/** The source `package.json` file (default: same as `packageJson` option) */
|
|
68
|
+
outputPackageJson: _outputPackageJson,
|
|
69
|
+
/** The extension used for CommonJS modules (default: `.cjs`) */
|
|
70
|
+
cjsExtension: _cjsExtension,
|
|
71
|
+
/** The extension used for EcmaScript modules (default: `.mjs`) */
|
|
72
|
+
esmExtension: _esmExtension,
|
|
73
|
+
/** A glob pattern matching all test files (default: `**∕*.test.([cm])?ts`) */
|
|
74
|
+
testGlob: _testGlob,
|
|
75
|
+
/** A glob pattern matching files to be exported (default: `index.*`) */
|
|
76
|
+
exportsGlob: _exportsGlob,
|
|
77
|
+
/* ====================================================================== *
|
|
78
|
+
* SOURCES STRUCTURE *
|
|
79
|
+
* ====================================================================== */
|
|
80
|
+
/** Find all CommonJS source files (`*.cts`) */
|
|
81
|
+
_find_sources_cts() {
|
|
82
|
+
return find("**/*.(c)?ts", { directory: this.sourceDir, ignore: "**/*.d.ts" });
|
|
83
|
+
},
|
|
84
|
+
/** Find all EcmaScript Module source files (`*.mts`) */
|
|
85
|
+
_find_sources_mts() {
|
|
86
|
+
return find("**/*.(m)?ts", { directory: this.sourceDir, ignore: "**/*.d.ts" });
|
|
87
|
+
},
|
|
88
|
+
/** Find all typescript source files (`*.ts`, `*.mts` and `*.cts`) */
|
|
89
|
+
_find_sources() {
|
|
90
|
+
return merge([
|
|
91
|
+
_cjsTranspile ? this._find_sources_cts() : noop(),
|
|
92
|
+
_esmTranspile ? this._find_sources_mts() : noop()
|
|
93
|
+
]);
|
|
94
|
+
},
|
|
95
|
+
/** Find all types definition files within sources */
|
|
96
|
+
_find_types() {
|
|
97
|
+
return find("**/*.d.ts", { directory: this.sourceDir });
|
|
98
|
+
},
|
|
99
|
+
/** Find all types definition files within sources */
|
|
100
|
+
_find_extras() {
|
|
101
|
+
if (!isDirectory(this.extraTypesDir))
|
|
102
|
+
return noop();
|
|
103
|
+
return find("**/*.d.ts", { directory: this.extraTypesDir });
|
|
104
|
+
},
|
|
105
|
+
/** Find all resource files (non-typescript files) within sources */
|
|
106
|
+
_find_resources() {
|
|
107
|
+
return find("**/*", { directory: this.sourceDir, ignore: "**/*.([cm])?ts" });
|
|
108
|
+
},
|
|
109
|
+
/** Find all test source files */
|
|
110
|
+
_find_tests() {
|
|
111
|
+
return find(this.testGlob, { directory: this.testDir, ignore: "**/*.d.ts" });
|
|
112
|
+
},
|
|
113
|
+
/* ====================================================================== *
|
|
114
|
+
* TRANSPILE *
|
|
115
|
+
* ====================================================================== */
|
|
116
|
+
/** Transpile to CJS */
|
|
117
|
+
transpile_cjs() {
|
|
118
|
+
return this._find_sources_cts().esbuild({
|
|
119
|
+
...esbuildMergedOptions,
|
|
120
|
+
format: "cjs",
|
|
121
|
+
outdir: this.destDir,
|
|
122
|
+
outExtension: { ".js": this.cjsExtension }
|
|
123
|
+
});
|
|
124
|
+
},
|
|
125
|
+
/** Transpile to ESM */
|
|
126
|
+
transpile_esm() {
|
|
127
|
+
return this._find_sources_mts().esbuild({
|
|
128
|
+
...esbuildMergedOptions,
|
|
129
|
+
format: "esm",
|
|
130
|
+
outdir: this.destDir,
|
|
131
|
+
outExtension: { ".js": this.esmExtension }
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
/** Generate all .d.ts files */
|
|
135
|
+
transpile_types() {
|
|
136
|
+
return merge([
|
|
137
|
+
this._find_sources(),
|
|
138
|
+
this._find_types(),
|
|
139
|
+
this._find_extras()
|
|
140
|
+
]).tsc("tsconfig.json", {
|
|
141
|
+
noEmit: false,
|
|
142
|
+
rootDir: this.sourceDir,
|
|
143
|
+
declaration: true,
|
|
144
|
+
emitDeclarationOnly: true,
|
|
145
|
+
outDir: this.destDir
|
|
146
|
+
});
|
|
147
|
+
},
|
|
148
|
+
/** Copy all resources coming alongside our sources */
|
|
149
|
+
transpile_resources() {
|
|
150
|
+
return merge([
|
|
151
|
+
this._find_resources(),
|
|
152
|
+
this._find_types()
|
|
153
|
+
]).copy(this.destDir);
|
|
154
|
+
},
|
|
155
|
+
/** Transpile all source code */
|
|
156
|
+
async transpile() {
|
|
157
|
+
banner("Transpiling source files");
|
|
158
|
+
if (isDirectory(this.destDir))
|
|
159
|
+
await rmrf(this.destDir);
|
|
160
|
+
return merge([
|
|
161
|
+
_cjsTranspile ? this.transpile_cjs() : noop(),
|
|
162
|
+
_esmTranspile ? this.transpile_esm() : noop(),
|
|
163
|
+
this.transpile_types(),
|
|
164
|
+
this.transpile_resources()
|
|
165
|
+
]);
|
|
166
|
+
},
|
|
167
|
+
/* ====================================================================== *
|
|
168
|
+
* TEST, COVERAGE & LINTING *
|
|
169
|
+
* ====================================================================== */
|
|
170
|
+
/** Run test and emit coverage data */
|
|
171
|
+
async test() {
|
|
172
|
+
banner("Running tests");
|
|
173
|
+
if (_coverage && isDirectory(this.coverageDataDir))
|
|
174
|
+
await rmrf(this.coverageDataDir);
|
|
175
|
+
await this._find_tests().jasmine({ coverageDir: _coverage ? this.coverageDataDir : void 0 });
|
|
176
|
+
},
|
|
177
|
+
/** Run tests (always) and generate a coverage report */
|
|
178
|
+
async coverage() {
|
|
179
|
+
let files;
|
|
180
|
+
try {
|
|
181
|
+
await this.test();
|
|
182
|
+
} finally {
|
|
183
|
+
banner("Preparing coverage report");
|
|
184
|
+
files = await this._find_sources().coverage(this.coverageDataDir, {
|
|
185
|
+
reportDir: this.coverageDir,
|
|
186
|
+
minimumCoverage: _minimumCoverage,
|
|
187
|
+
minimumFileCoverage: _minimumFileCoverage,
|
|
188
|
+
optimalCoverage: _optimalCoverage,
|
|
189
|
+
optimalFileCoverage: _optimalFileCoverage
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
return files;
|
|
193
|
+
},
|
|
194
|
+
/** Run test and emit coverage data */
|
|
195
|
+
async lint() {
|
|
196
|
+
banner("Linting sources");
|
|
197
|
+
await merge([
|
|
198
|
+
this._find_sources(),
|
|
199
|
+
this._find_tests(),
|
|
200
|
+
this._find_types(),
|
|
201
|
+
this._find_extras()
|
|
202
|
+
]).eslint();
|
|
203
|
+
},
|
|
204
|
+
/* ====================================================================== *
|
|
205
|
+
* PACKAGE.JSON EXPORTS *
|
|
206
|
+
* ====================================================================== */
|
|
207
|
+
/** Inject `exports` into the `package.json` file */
|
|
208
|
+
async exports() {
|
|
209
|
+
const files = await this.transpile();
|
|
210
|
+
banner('Updating exports in "package.json"');
|
|
211
|
+
return merge([files]).filter(this.exportsGlob, { directory: this.destDir, ignore: "**/*.map" }).exports({
|
|
212
|
+
cjsExtension: this.cjsExtension,
|
|
213
|
+
esmExtension: this.esmExtension,
|
|
214
|
+
packageJson: this.packageJson,
|
|
215
|
+
outputPackageJson: this.outputPackageJson
|
|
216
|
+
});
|
|
217
|
+
},
|
|
218
|
+
/* ====================================================================== *
|
|
219
|
+
* DEFAULT: DO EVERYTHING *
|
|
220
|
+
* ====================================================================== */
|
|
221
|
+
/* coverage ignore next */
|
|
222
|
+
/** Build everything */
|
|
223
|
+
async default() {
|
|
224
|
+
if (_parallelize) {
|
|
225
|
+
await Promise.all([
|
|
226
|
+
this.transpile(),
|
|
227
|
+
this.coverage(),
|
|
228
|
+
// implies "test"
|
|
229
|
+
this.lint()
|
|
230
|
+
]);
|
|
231
|
+
} else {
|
|
232
|
+
await this.transpile();
|
|
233
|
+
await this.coverage();
|
|
234
|
+
await this.lint();
|
|
235
|
+
}
|
|
236
|
+
await this.exports();
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
function emitBanner(message) {
|
|
241
|
+
log.notice([
|
|
242
|
+
"",
|
|
243
|
+
$gry(`\u2554${"".padStart(60, "\u2550")}\u2557`),
|
|
244
|
+
`${$gry("\u2551")} ${$wht(message.padEnd(58, " "))} ${$gry("\u2551")}`,
|
|
245
|
+
$gry(`\u255A${"".padStart(60, "\u2550")}\u255D`),
|
|
246
|
+
""
|
|
247
|
+
].join("\n"));
|
|
248
|
+
}
|
|
249
|
+
export {
|
|
250
|
+
tasks
|
|
251
|
+
};
|
|
252
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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;AAqFO,SAAS,MAAM,UAAwB,CAAC,GAAG;AAChD,QAAM;AAAA,IACJ,WAAW,aAAa;AAAA,IACxB,SAAS,WAAW;AAAA,IACpB,SAAS,WAAW;AAAA,IACpB,aAAa,eAAe;AAAA,IAC5B,iBAAiB,mBAAmB;AAAA,IACpC,eAAe,iBAAiB;AAAA,IAEhC,aAAa,eAAe;AAAA,IAC5B,mBAAmB,qBAAqB;AAAA,IAExC,cAAc,gBAAgB;AAAA,IAC9B,cAAc,gBAAgB;AAAA,IAC9B,cAAc,gBAAgB;AAAA,IAC9B,cAAc,gBAAgB;AAAA,IAE9B,aAAa,eAAe;AAAA,IAC5B,SAAS,WAAW,CAAC;AAAA,IACrB,UAAU,YAAY;AAAA,IACtB,aAAa,eAAe;AAAA,IAC5B,UAAU,YAAY;AAAA,IACtB,iBAAiB,mBAAmB;AAAA,IACpC,qBAAqB,uBAAuB;AAAA,IAC5C,iBAAiB,mBAAmB;AAAA,IACpC,qBAAqB,uBAAuB;AAAA,IAE5C,gBAAgB,kBAAkB,CAAC;AAAA,EACrC,IAAI;AAGJ,QAAM,SAAS,WAAW,aAAa,IAAI,SAAc;AAGzD,QAAM,uBAAuB,OAAO,OAAO,CAAC,GAAG,iBAAiB,eAAe;AAE/E,SAAO,MAAM;AAAA;AAAA,IAEX,WAAW;AAAA;AAAA,IAEX,SAAS;AAAA;AAAA,IAET,SAAS;AAAA;AAAA,IAET,aAAa;AAAA;AAAA,IAEb,iBAAiB;AAAA;AAAA,IAEjB,eAAe;AAAA;AAAA,IAEf,aAAa;AAAA;AAAA,IAEb,mBAAmB;AAAA;AAAA,IAEnB,cAAc;AAAA;AAAA,IAEd,cAAc;AAAA;AAAA,IAEd,UAAU;AAAA;AAAA,IAEV,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,IAOb,oBAA0B;AACxB,aAAO,KAAK,eAAe,EAAE,WAAW,KAAK,WAAW,QAAQ,YAAY,CAAC;AAAA,IAC/E;AAAA;AAAA,IAGA,oBAA0B;AACxB,aAAO,KAAK,eAAe,EAAE,WAAW,KAAK,WAAW,QAAQ,YAAY,CAAC;AAAA,IAC/E;AAAA;AAAA,IAGA,gBAAsB;AACpB,aAAO,MAAM;AAAA,QACX,gBAAgB,KAAK,kBAAkB,IAAI,KAAK;AAAA,QAChD,gBAAgB,KAAK,kBAAkB,IAAI,KAAK;AAAA,MAClD,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,cAAoB;AAClB,aAAO,KAAK,aAAa,EAAE,WAAW,KAAK,UAAU,CAAC;AAAA,IACxD;AAAA;AAAA,IAGA,eAAqB;AACnB,UAAI,CAAE,YAAY,KAAK,aAAa;AAAG,eAAO,KAAK;AACnD,aAAO,KAAK,aAAa,EAAE,WAAW,KAAK,cAAc,CAAC;AAAA,IAC5D;AAAA;AAAA,IAIA,kBAAwB;AACtB,aAAO,KAAK,QAAQ,EAAE,WAAW,KAAK,WAAW,QAAQ,iBAAiB,CAAC;AAAA,IAC7E;AAAA;AAAA,IAGA,cAAoB;AAClB,aAAO,KAAK,KAAK,UAAU,EAAE,WAAW,KAAK,SAAS,QAAQ,YAAY,CAAC;AAAA,IAC7E;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAsB;AACpB,aAAO,KAAK,kBAAkB,EACzB,QAAQ;AAAA,QACP,GAAG;AAAA,QACH,QAAQ;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,cAAc,EAAE,OAAO,KAAK,aAAa;AAAA,MAC3C,CAAC;AAAA,IACP;AAAA;AAAA,IAGA,gBAAsB;AACpB,aAAO,KAAK,kBAAkB,EACzB,QAAQ;AAAA,QACP,GAAG;AAAA,QACH,QAAQ;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,cAAc,EAAE,OAAO,KAAK,aAAa;AAAA,MAC3C,CAAC;AAAA,IACP;AAAA;AAAA,IAGA,kBAAwB;AACtB,aAAO,MAAM;AAAA,QACX,KAAK,cAAc;AAAA,QACnB,KAAK,YAAY;AAAA,QACjB,KAAK,aAAa;AAAA,MACpB,CAAC,EAAE,IAAI,iBAAiB;AAAA,QACtB,QAAQ;AAAA,QACR,SAAS,KAAK;AAAA,QACd,aAAa;AAAA,QACb,qBAAqB;AAAA,QACrB,QAAQ,KAAK;AAAA,MACf,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,sBAA4B;AAC1B,aAAO,MAAM;AAAA,QACX,KAAK,gBAAgB;AAAA,QACrB,KAAK,YAAY;AAAA,MACnB,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA,IACtB;AAAA;AAAA,IAGA,MAAM,YAA2B;AAC/B,aAAO,0BAA0B;AAEjC,UAAI,YAAY,KAAK,OAAO;AAAG,cAAM,KAAK,KAAK,OAAO;AAEtD,aAAO,MAAM;AAAA,QACX,gBAAgB,KAAK,cAAc,IAAI,KAAK;AAAA,QAC5C,gBAAgB,KAAK,cAAc,IAAI,KAAK;AAAA,QAC5C,KAAK,gBAAgB;AAAA,QACrB,KAAK,oBAAoB;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAsB;AAC1B,aAAO,eAAe;AAEtB,UAAI,aAAa,YAAY,KAAK,eAAe;AAAG,cAAM,KAAK,KAAK,eAAe;AAEnF,YAAM,KACD,YAAY,EACZ,QAAQ,EAAE,aAAa,YAAY,KAAK,kBAAkB,OAAU,CAAC;AAAA,IAC5E;AAAA;AAAA,IAGA,MAAM,WAA0B;AAE9B,UAAI;AACJ,UAAI;AACF,cAAM,KAAK,KAAK;AAAA,MAClB,UAAE;AACA,eAAO,2BAA2B;AAClC,gBAAQ,MAAM,KACT,cAAc,EACd,SAAS,KAAK,iBAAiB;AAAA,UAC9B,WAAW,KAAK;AAAA,UAChB,iBAAiB;AAAA,UACjB,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,qBAAqB;AAAA,QACvB,CAAC;AAAA,MACP;AAGA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAM,OAAsB;AAC1B,aAAO,iBAAiB;AAExB,YAAM,MAAM;AAAA,QACV,KAAK,cAAc;AAAA,QACnB,KAAK,YAAY;AAAA,QACjB,KAAK,YAAY;AAAA,QACjB,KAAK,aAAa;AAAA,MACpB,CAAC,EAAE,OAAO;AAAA,IACZ;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,UAAyB;AAC7B,YAAM,QAAQ,MAAM,KAAK,UAAU;AAEnC,aAAO,oCAAoC;AAE3C,aAAO,MAAM,CAAE,KAAM,CAAC,EACjB,OAAO,KAAK,aAAa,EAAE,WAAW,KAAK,SAAS,QAAQ,WAAW,CAAC,EACxE,QAAQ;AAAA,QACP,cAAc,KAAK;AAAA,QACnB,cAAc,KAAK;AAAA,QACnB,aAAa,KAAK;AAAA,QAClB,mBAAmB,KAAK;AAAA,MAC1B,CAAC;AAAA,IACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,UAAyB;AAC7B,UAAI,cAAc;AAChB,cAAM,QAAQ,IAAI;AAAA,UAChB,KAAK,UAAU;AAAA,UACf,KAAK,SAAS;AAAA;AAAA,UACd,KAAK,KAAK;AAAA,QACZ,CAAC;AAAA,MACH,OAAO;AACL,cAAM,KAAK,UAAU;AACrB,cAAM,KAAK,SAAS;AACpB,cAAM,KAAK,KAAK;AAAA,MAClB;AACA,YAAM,KAAK,QAAQ;AAAA,IACrB;AAAA,EACF,CAAC;AACH;AAIA,SAAS,WAAW,SAAuB;AACzC,MAAI,OAAO;AAAA,IACT;AAAA,IAAI,KAAK,SAAS,GAAG,SAAS,IAAI,QAAQ,SAAS;AAAA,IACnD,GAAG,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ;AAAA,IACnE,KAAK,SAAS,GAAG,SAAS,IAAI,QAAQ,SAAS;AAAA,IAAG;AAAA,EACpD,EAAE,KAAK,IAAI,CAAC;AACd;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plugjs/build",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Simple shared build using PlugJS",
|
|
5
|
-
"main": "./dist/
|
|
6
|
-
"module": "./dist/
|
|
7
|
-
"types": "./dist/
|
|
5
|
+
"main": "./dist/index.cjs",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
-
"import": {
|
|
11
|
-
"types": "./dist/build.d.ts",
|
|
12
|
-
"default": "./dist/build.mjs"
|
|
13
|
-
},
|
|
14
10
|
"require": {
|
|
15
|
-
"types": "./dist/
|
|
16
|
-
"default": "./dist/
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.cjs"
|
|
13
|
+
},
|
|
14
|
+
"import": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.mjs"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
},
|
|
@@ -21,15 +21,20 @@
|
|
|
21
21
|
"bootstrap-plugjs-build": "./dist/bootstrap.mjs"
|
|
22
22
|
},
|
|
23
23
|
"scripts": {
|
|
24
|
-
"build": "plug"
|
|
24
|
+
"build": "plug",
|
|
25
|
+
"coverage": "plug coverage",
|
|
26
|
+
"dev": "plug coverage -w src -w test",
|
|
27
|
+
"lint": "plug lint",
|
|
28
|
+
"test": "plug test",
|
|
29
|
+
"transpile": "plug transpile"
|
|
25
30
|
},
|
|
26
31
|
"dependencies": {
|
|
27
|
-
"@plugjs/cov8": "^0.
|
|
28
|
-
"@plugjs/eslint": "^0.
|
|
29
|
-
"@plugjs/eslint-plugin": "^0.1.
|
|
30
|
-
"@plugjs/jasmine": "^0.
|
|
31
|
-
"@plugjs/plug": "^0.
|
|
32
|
-
"@plugjs/typescript": "^0.
|
|
32
|
+
"@plugjs/cov8": "^0.2.0",
|
|
33
|
+
"@plugjs/eslint": "^0.2.0",
|
|
34
|
+
"@plugjs/eslint-plugin": "^0.1.2",
|
|
35
|
+
"@plugjs/jasmine": "^0.2.0",
|
|
36
|
+
"@plugjs/plug": "^0.2.0",
|
|
37
|
+
"@plugjs/typescript": "^0.2.0"
|
|
33
38
|
},
|
|
34
39
|
"files": [
|
|
35
40
|
"*.md",
|
package/src/bootstrap.mts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
/* coverage ignore file // we don't test bootstrapping for now */
|
|
4
|
+
import { build, find, fs, isFile, log, resolve } from '@plugjs/plug'
|
|
3
5
|
import { $p } from '@plugjs/plug/logging'
|
|
4
6
|
|
|
5
7
|
const tasks = build({
|
|
@@ -7,7 +9,11 @@ const tasks = build({
|
|
|
7
9
|
async bootstrap_resources(): Promise<void> {
|
|
8
10
|
const pipe = find('**/*', '**/.*', { directory: '@../resources' })
|
|
9
11
|
const sources = await pipe
|
|
10
|
-
const targets = await pipe.copy('.', {
|
|
12
|
+
const targets = await pipe.copy('.', {
|
|
13
|
+
// it seems NPM has _some_ problems with some dotfiles (e.g. .gitignore)
|
|
14
|
+
rename: (relative) => relative.replaceAll(/(^|\/)__dot_/g, '$1.'),
|
|
15
|
+
overwrite,
|
|
16
|
+
})
|
|
11
17
|
|
|
12
18
|
log('Bootstrapped', targets.length, 'of', sources.length, 'files:')
|
|
13
19
|
for (const file of targets.absolutePaths()) log(` ${$p(file)}`)
|
|
@@ -33,19 +39,30 @@ const tasks = build({
|
|
|
33
39
|
// Merge package contents
|
|
34
40
|
log(`Updating ${$p(targetPackage)}`)
|
|
35
41
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
// Default scripts
|
|
43
|
+
targetJson.scripts = {
|
|
44
|
+
build: 'plug',
|
|
45
|
+
coverage: 'plug coverage',
|
|
46
|
+
dev: 'plug coverage -w src -w test',
|
|
47
|
+
lint: 'plug lint',
|
|
48
|
+
test: 'plug test',
|
|
49
|
+
transpile: 'plug transpile',
|
|
50
|
+
...targetJson.scripts,
|
|
40
51
|
}
|
|
41
52
|
|
|
42
|
-
|
|
53
|
+
// Exported/packaged files
|
|
54
|
+
const targetFiles = new Set([ ...(targetJson.files || []), '*.md', 'dist/', 'src/' ])
|
|
55
|
+
targetJson.files = [ ...targetFiles ].sort()
|
|
56
|
+
|
|
57
|
+
// *DEV* dependency on this build
|
|
58
|
+
targetJson.devDependencies = {
|
|
59
|
+
...targetJson.devDependencies,
|
|
43
60
|
[buildJson.name]: `^${buildJson.version}`,
|
|
44
|
-
}
|
|
61
|
+
}
|
|
45
62
|
|
|
46
63
|
// Overwrite taget package.json file
|
|
47
64
|
log(`Writing ${$p(targetPackage)}`)
|
|
48
|
-
await fs.writeFile(targetPackage, JSON.stringify(targetJson, null, 2), 'utf-8')
|
|
65
|
+
await fs.writeFile(targetPackage, JSON.stringify(targetJson, null, 2) + '\n', 'utf-8')
|
|
49
66
|
},
|
|
50
67
|
|
|
51
68
|
/** Bootstrap the project */
|
|
@@ -57,4 +74,4 @@ const tasks = build({
|
|
|
57
74
|
})
|
|
58
75
|
|
|
59
76
|
const overwrite = process.argv[2] === '--overwrite' ? 'overwrite' : 'skip'
|
|
60
|
-
|
|
77
|
+
tasks.bootstrap({ overwrite }).catch(log.error)
|