backfill 6.2.4 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +341 -3
- package/lib/api.js +8 -8
- package/lib/audit.js +2 -2
- package/lib/commandRunner.js +2 -2
- package/lib/index.js +14 -14
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -2,7 +2,345 @@
|
|
|
2
2
|
|
|
3
3
|
A JavaScript caching library for reducing build time.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- **🔌 Easy to install**: Simply wrap your build commands inside
|
|
6
|
+
`backfill -- [command]`
|
|
7
|
+
- **☁️ Remote cache**: Store your cache on Azure Blob or as an npm package
|
|
8
|
+
- **⚙️ Fully configurable**: Smart defaults with cross-package and per-package
|
|
9
|
+
configuration and environment variable overrides
|
|
6
10
|
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
_backfill is under active development and should probably not be used in
|
|
12
|
+
production, yet. We will initially focus on stability improvements. We will look
|
|
13
|
+
into various optimization strategies, adding more customization, and introducing
|
|
14
|
+
an API for only running scripts in packages that have changed and skipping
|
|
15
|
+
others altogether._
|
|
16
|
+
|
|
17
|
+
_Current prerequisites:_
|
|
18
|
+
|
|
19
|
+
- git
|
|
20
|
+
- yarn.lock and yarn workspaces (for optimized hashing)
|
|
21
|
+
|
|
22
|
+
These prerequisites can easily be loosened to make backfill work with npm, Rush,
|
|
23
|
+
and Lerna.
|
|
24
|
+
|
|
25
|
+
## Why
|
|
26
|
+
|
|
27
|
+
When you're working in a multi-package repo you don't want to re-build packages
|
|
28
|
+
that haven't changed. By wrapping your build scripts inside `backfill` you
|
|
29
|
+
enable storing and fetching of build output to and from a local or remote cache.
|
|
30
|
+
|
|
31
|
+
Backfill is based on two concepts:
|
|
32
|
+
|
|
33
|
+
1. **Hashing**: It will hash the files of a package, its dependencies and the
|
|
34
|
+
build command
|
|
35
|
+
2. **Caching**: Using the hash key, it will look for build output from a local
|
|
36
|
+
or remote cache. If there's a match, it will backfill the package using the
|
|
37
|
+
cache. Otherwise, it will run the build command and persist the output to the
|
|
38
|
+
cache.
|
|
39
|
+
|
|
40
|
+
## Install
|
|
41
|
+
|
|
42
|
+
Install backfill using yarn:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
$ yarn add --dev backfill
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Usage - CLI
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
backfill -- [command]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Typically you would wrap your npm scripts inside `backfill`, like this:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"name": "package",
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "backfill -- tsc -b"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### `--audit`
|
|
66
|
+
|
|
67
|
+
Backfill can only bring back build output from the folders it was asked to
|
|
68
|
+
cache. A package that modifies or adds files outside of the cached folder will
|
|
69
|
+
not be brought back to the same state as when it was initially built. To help
|
|
70
|
+
you debug this you can add `--audit` to your `backfill` command. It will listen
|
|
71
|
+
to all file changes in your repo (it assumes you're in a git repo) while running
|
|
72
|
+
the build command and then report on any files that got changed outside of the
|
|
73
|
+
cache folder.
|
|
74
|
+
|
|
75
|
+
### Configuration
|
|
76
|
+
|
|
77
|
+
Backfill will look for `backfill.config.js` in the package it was called from
|
|
78
|
+
and among parent folders recursively and then combine those configs together.
|
|
79
|
+
|
|
80
|
+
To configure backfill, simply export a config object with the properties you
|
|
81
|
+
wish to override:
|
|
82
|
+
|
|
83
|
+
```js
|
|
84
|
+
module.exports = {
|
|
85
|
+
cacheStorageConfig: {
|
|
86
|
+
provider: "azure-blob",
|
|
87
|
+
options: { ... }
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The default configuration object is:
|
|
93
|
+
|
|
94
|
+
```js
|
|
95
|
+
{
|
|
96
|
+
cacheStorageConfig: { provider: "local" },
|
|
97
|
+
clearOutputFolder: false,
|
|
98
|
+
internalCacheFolder: "node_modules/.cache/backfill",
|
|
99
|
+
logFolder: "node_modules/.cache/backfill",
|
|
100
|
+
logLevel: "info",
|
|
101
|
+
mode: "READ_WRITE",
|
|
102
|
+
name: "[name-of-package]",
|
|
103
|
+
outputGlob: ["lib/**"],
|
|
104
|
+
packageRoot: "path/to/package",
|
|
105
|
+
producePerformanceLogs: false,
|
|
106
|
+
validateOutput: false
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The `outputGlob` is a list of globs describing the files you want to cache.
|
|
111
|
+
`outputGlob` should be expressed as a relative path from the root of each
|
|
112
|
+
package. If you want to cache `package-a/lib`, for instance, you'd write
|
|
113
|
+
`outputGlob: ["lib/**"]`. If you also want to cache the `pacakge-a/dist/bundles`
|
|
114
|
+
folder, you'd write `outputGlob: ["lib/**", "dist/bundles/**"]`.
|
|
115
|
+
|
|
116
|
+
The configuration type is:
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
export type Config = {
|
|
120
|
+
cacheStorageConfig: CacheStorageConfig;
|
|
121
|
+
clearOutputFolder: boolean;
|
|
122
|
+
internalCacheFolder: string;
|
|
123
|
+
logFolder: string;
|
|
124
|
+
logLevel: LogLevels;
|
|
125
|
+
mode: "READ_ONLY" | "WRITE_ONLY" | "READ_WRITE" | "PASS";
|
|
126
|
+
name: string;
|
|
127
|
+
outputGlob: string[];
|
|
128
|
+
packageRoot: string;
|
|
129
|
+
performanceReportName?: string;
|
|
130
|
+
producePerformanceLogs: boolean;
|
|
131
|
+
validateOutput: boolean;
|
|
132
|
+
};
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### Environment variable
|
|
136
|
+
|
|
137
|
+
You can override configuration with environment variables. Backfill will also
|
|
138
|
+
look for a `.env`-file in the root of your repository, and load those into the
|
|
139
|
+
environment. This can be useful when you don't want to commit keys and secrets
|
|
140
|
+
to your remote cache, or if you want to commit a read-only cache access key in
|
|
141
|
+
the repo and override with a write and read access key in the PR build, for
|
|
142
|
+
instance.
|
|
143
|
+
|
|
144
|
+
See `getEnvConfig()` in
|
|
145
|
+
[`./packages/config/src/envConfig.ts`](https://github.com/microsoft/backfill/blob/master/packages/config/src/envConfig.ts#L15).
|
|
146
|
+
|
|
147
|
+
## Set up remote cache
|
|
148
|
+
|
|
149
|
+
### Microsoft Azure Blob Storage
|
|
150
|
+
|
|
151
|
+
To cache to a Microsoft Azure Blob Storage you need to provide a connection
|
|
152
|
+
string and the container name. If you are configuring via `backfill.config.js`,
|
|
153
|
+
you can use the following syntax:
|
|
154
|
+
|
|
155
|
+
```js
|
|
156
|
+
module.exports = {
|
|
157
|
+
cacheStorageConfig: {
|
|
158
|
+
provider: "azure-blob",
|
|
159
|
+
options: {
|
|
160
|
+
connectionString: "...",
|
|
161
|
+
container: "..."
|
|
162
|
+
maxSize: 12345
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Optionally, you can pass a `credential` along with a `connectionString` which
|
|
169
|
+
does not have a SAS token. This is useful if you want to use a managed identity
|
|
170
|
+
or interactive browser login. For example:
|
|
171
|
+
|
|
172
|
+
```js
|
|
173
|
+
import { InteractiveBrowserCredential } from '@azure/identity'
|
|
174
|
+
|
|
175
|
+
module.exports = {
|
|
176
|
+
cacheStorageConfig: {
|
|
177
|
+
provider: "azure-blob",
|
|
178
|
+
options: {
|
|
179
|
+
connectionString: "https://<your-storage-account-name>.blob.core.windows.net",
|
|
180
|
+
credential: new InteractiveBrowserCredential()
|
|
181
|
+
container: "..."
|
|
182
|
+
maxSize: 12345
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
#### Options
|
|
190
|
+
|
|
191
|
+
<dl>
|
|
192
|
+
<dt>connectionString</dt>
|
|
193
|
+
<dd>retrieve this from the Azure Portal interface</dd>
|
|
194
|
+
|
|
195
|
+
<dt>container</dt>
|
|
196
|
+
<dd>the name of the blob storage container</dd>
|
|
197
|
+
|
|
198
|
+
<dt>maxSize (<em>optional</em>)</dt>
|
|
199
|
+
<dd>
|
|
200
|
+
max size of a single package cache, in the number of bytes
|
|
201
|
+
</dd>
|
|
202
|
+
</dl>
|
|
203
|
+
|
|
204
|
+
You can also configure Microsoft Azure Blob Storage using environment variables.
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
BACKFILL_CACHE_PROVIDER="azure-blob"
|
|
209
|
+
BACKFILL_CACHE_PROVIDER_OPTIONS='{"connectionString":"...","container":"..."}'
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Npm package
|
|
214
|
+
|
|
215
|
+
To cache to an NPM package you need to provide a package name and the registry
|
|
216
|
+
URL of your package feed. This feed should probably be private. If you are
|
|
217
|
+
configuring via `backfill.config.js`, you can use the following syntax:
|
|
218
|
+
|
|
219
|
+
```js
|
|
220
|
+
module.exports = {
|
|
221
|
+
cacheStorageConfig: {
|
|
222
|
+
provider: "npm",
|
|
223
|
+
options: {
|
|
224
|
+
npmPackageName: "...",
|
|
225
|
+
registryUrl: "...",
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
You can also provide a path to the `.npmrc` user config file, to provide auth
|
|
232
|
+
details related to your package feed using the `npmrcUserconfig` field in
|
|
233
|
+
`options`.
|
|
234
|
+
|
|
235
|
+
You can also configure NPM package cache using environment variables.
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
BACKFILL_CACHE_PROVIDER="npm"
|
|
239
|
+
BACKFILL_CACHE_PROVIDER_OPTIONS='{"npmPackageName":"...","registryUrl":"..."}'
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Skipping cache locally
|
|
243
|
+
|
|
244
|
+
Sometimes in a local build environment, it is useful to compare hashes to
|
|
245
|
+
determine whether to execute the task without having to explicitly use a
|
|
246
|
+
separate directory for the cache.
|
|
247
|
+
|
|
248
|
+
One caveat, this is using output that the task produced and one could possibly
|
|
249
|
+
modify the output on a local development environment. For this reason, this is
|
|
250
|
+
an opt-in behavior rather than the default.
|
|
251
|
+
|
|
252
|
+
The main benefit of using this strategy is a **significant** speed boost.
|
|
253
|
+
Backfill can skip file copying of the cached outputs if it can rely on the built
|
|
254
|
+
artifacts. Hashing is CPU-bound while caching is I/O-bound. Using this strategy
|
|
255
|
+
results in speed gains but at the cost of needing to trust the outputs have not
|
|
256
|
+
be altered by the user. While this usually is true, it is prudent to also
|
|
257
|
+
provide a command in your repository to clean the output along with the saved
|
|
258
|
+
hashes.
|
|
259
|
+
|
|
260
|
+
You can configure this from the `backfill.config.js` file this way:
|
|
261
|
+
|
|
262
|
+
```js
|
|
263
|
+
module.exports = {
|
|
264
|
+
cacheStorageConfig: {
|
|
265
|
+
provider: "local-skip",
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Like other cases, you can also use the environment variable to choose this
|
|
271
|
+
storage strategy:
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
BACKFILL_CACHE_PROVIDER="local-skip"
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Custom storage providers
|
|
278
|
+
|
|
279
|
+
It is also possible to give backfill a custom storage provider altogether. This
|
|
280
|
+
will give the ultimate flexibility in how to handle cache fetching and putting.
|
|
281
|
+
|
|
282
|
+
Configure the custom cache provider this way:
|
|
283
|
+
|
|
284
|
+
```js
|
|
285
|
+
// CustomStorageProvider.ts
|
|
286
|
+
class CustomStorageProvider implements ICacheStorage {
|
|
287
|
+
constructor(providerOptions: any, logger: Logger, cwd: string) {
|
|
288
|
+
// do what is needed in regards to the options
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
async fetch(hash: string) {
|
|
292
|
+
// some fetch logic
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
async put(hash: string, filesToCache: string[]) {
|
|
296
|
+
// some putting logic
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
module.exports.CustomStorageProvider = CustomStorageProvider;
|
|
301
|
+
|
|
302
|
+
// backfill configuration
|
|
303
|
+
const CustomStorageProvider = require("./custom-storage-provider");
|
|
304
|
+
|
|
305
|
+
module.exports = {
|
|
306
|
+
cacheStorageConfig: {
|
|
307
|
+
provider: (logger, cwd) =>
|
|
308
|
+
new CustomStorageProvider(
|
|
309
|
+
{
|
|
310
|
+
key1: "value1",
|
|
311
|
+
key2: "value2",
|
|
312
|
+
},
|
|
313
|
+
logger,
|
|
314
|
+
cwd
|
|
315
|
+
),
|
|
316
|
+
},
|
|
317
|
+
};
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## API
|
|
321
|
+
|
|
322
|
+
Backfill provides an API, this allows for more complex scenarios, and
|
|
323
|
+
performance optimizations.
|
|
324
|
+
|
|
325
|
+
```js
|
|
326
|
+
const backfill = require("backfill/lib/api");
|
|
327
|
+
|
|
328
|
+
const packagePath = getPath(packageName);
|
|
329
|
+
|
|
330
|
+
const logger = backfill.makeLogger("verbose", process.stdout, process.stderr);
|
|
331
|
+
const packagehash = await backfill.computeHash(packagePath, logger);
|
|
332
|
+
|
|
333
|
+
const fetchSuccess = await backfill.fetch(packagePath, packageHash, logger);
|
|
334
|
+
|
|
335
|
+
if (!fetchSuccess) {
|
|
336
|
+
await runBuildCommand();
|
|
337
|
+
await backfill.put(packagePath, packageHash, logger);
|
|
338
|
+
}
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## Performance Logs
|
|
342
|
+
|
|
343
|
+
You can optionally output performance logs to disk. If turned on, backfill will
|
|
344
|
+
output a log file after each run with performance metrics. Each log file is
|
|
345
|
+
formatted as a JSON file. You can turn performance logging by setting
|
|
346
|
+
`producePerformanceLogs: true` in `backfill.config.js`.
|
package/lib/api.js
CHANGED
|
@@ -20,12 +20,12 @@ function makeConsole(stdout, stderr) {
|
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
function makeLogger(logLevel, stdout, stderr) {
|
|
23
|
-
return backfill_logger_1.makeLogger(logLevel, { console: makeConsole(stdout, stderr) });
|
|
23
|
+
return (0, backfill_logger_1.makeLogger)(logLevel, { console: makeConsole(stdout, stderr) });
|
|
24
24
|
}
|
|
25
25
|
exports.makeLogger = makeLogger;
|
|
26
26
|
async function computeHash(cwd, logger, hashSalt, config) {
|
|
27
27
|
if (!config) {
|
|
28
|
-
config = backfill_config_1.createConfig(logger, cwd);
|
|
28
|
+
config = (0, backfill_config_1.createConfig)(logger, cwd);
|
|
29
29
|
}
|
|
30
30
|
const { packageRoot } = config;
|
|
31
31
|
const hasher = new backfill_hasher_1.Hasher({ packageRoot }, logger);
|
|
@@ -35,7 +35,7 @@ async function computeHash(cwd, logger, hashSalt, config) {
|
|
|
35
35
|
exports.computeHash = computeHash;
|
|
36
36
|
async function computeHashOfOutput(cwd, logger, config) {
|
|
37
37
|
if (!config) {
|
|
38
|
-
config = backfill_config_1.createConfig(logger, cwd);
|
|
38
|
+
config = (0, backfill_config_1.createConfig)(logger, cwd);
|
|
39
39
|
}
|
|
40
40
|
const { packageRoot } = config;
|
|
41
41
|
const hasher = new backfill_hasher_1.Hasher({ packageRoot }, logger);
|
|
@@ -45,21 +45,21 @@ async function computeHashOfOutput(cwd, logger, config) {
|
|
|
45
45
|
exports.computeHashOfOutput = computeHashOfOutput;
|
|
46
46
|
async function fetch(cwd, hash, logger, config) {
|
|
47
47
|
if (!config) {
|
|
48
|
-
config = backfill_config_1.createConfig(logger, cwd);
|
|
48
|
+
config = (0, backfill_config_1.createConfig)(logger, cwd);
|
|
49
49
|
}
|
|
50
50
|
const { cacheStorageConfig, internalCacheFolder, incrementalCaching } = config;
|
|
51
|
-
const cacheStorage = backfill_cache_1.getCacheStorageProvider(cacheStorageConfig, internalCacheFolder, logger, cwd, incrementalCaching);
|
|
51
|
+
const cacheStorage = (0, backfill_cache_1.getCacheStorageProvider)(cacheStorageConfig, internalCacheFolder, logger, cwd, incrementalCaching);
|
|
52
52
|
const fetch = await cacheStorage.fetch(hash);
|
|
53
53
|
return fetch;
|
|
54
54
|
}
|
|
55
55
|
exports.fetch = fetch;
|
|
56
56
|
async function put(cwd, hash, logger, config) {
|
|
57
57
|
if (!config) {
|
|
58
|
-
config = backfill_config_1.createConfig(logger, cwd);
|
|
58
|
+
config = (0, backfill_config_1.createConfig)(logger, cwd);
|
|
59
59
|
}
|
|
60
60
|
const { cacheStorageConfig, internalCacheFolder, outputGlob, incrementalCaching, } = config;
|
|
61
|
-
const cacheStorage = backfill_cache_1.getCacheStorageProvider(cacheStorageConfig, internalCacheFolder, logger, cwd, incrementalCaching);
|
|
61
|
+
const cacheStorage = (0, backfill_cache_1.getCacheStorageProvider)(cacheStorageConfig, internalCacheFolder, logger, cwd, incrementalCaching);
|
|
62
62
|
await cacheStorage.put(hash, outputGlob);
|
|
63
63
|
}
|
|
64
64
|
exports.put = put;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyQkFBeUI7QUFFekIscURBQXVEO0FBQ3ZELHFEQUt5QjtBQUN6QixxREFBeUM7QUFDekMsbURBQXlEO0FBRXpELFNBQVMsV0FBVyxDQUFDLE1BQWdCLEVBQUUsTUFBZ0I7SUFDckQsT0FBTztRQUNMLElBQUksQ0FBQyxHQUFHLElBQWM7WUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQUcsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxJQUFjO1lBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsS0FBSyxDQUFDLEdBQUcsSUFBYztZQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBRyxDQUFDLENBQUM7UUFDckMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUN4QixRQUFrQixFQUNsQixNQUFnQixFQUNoQixNQUFnQjtJQUVoQixPQUFPLElBQUEsNEJBQWtCLEVBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFORCxnQ0FNQztBQUVNLEtBQUssVUFBVSxXQUFXLENBQy9CLEdBQVcsRUFDWCxNQUFjLEVBQ2QsUUFBaUIsRUFDakIsTUFBb0M7SUFFcEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFBLDhCQUFZLEVBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDO0lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVuRCxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBZEQsa0NBY0M7QUFFTSxLQUFLLFVBQVUsbUJBQW1CLENBQ3ZDLEdBQVcsRUFDWCxNQUFjLEVBQ2QsTUFBb0M7SUFFcEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFBLDhCQUFZLEVBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDO0lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRCxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFaRCxrREFZQztBQUVNLEtBQUssVUFBVSxLQUFLLENBQ3pCLEdBQVcsRUFDWCxJQUFZLEVBQ1osTUFBYyxFQUNkLE1BR0M7SUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxHQUFHLElBQUEsOEJBQVksRUFBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDcEM7SUFDRCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsR0FDbkUsTUFBTSxDQUFDO0lBQ1QsTUFBTSxZQUFZLEdBQUcsSUFBQSx3Q0FBdUIsRUFDMUMsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sR0FBRyxFQUNILGtCQUFrQixDQUNuQixDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQXZCRCxzQkF1QkM7QUFFTSxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFXLEVBQ1gsSUFBWSxFQUNaLE1BQWMsRUFDZCxNQU1DO0lBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFBLDhCQUFZLEVBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDO0lBQ0QsTUFBTSxFQUNKLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLGtCQUFrQixHQUNuQixHQUFHLE1BQU0sQ0FBQztJQUNYLE1BQU0sWUFBWSxHQUFHLElBQUEsd0NBQXVCLEVBQzFDLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLEdBQUcsRUFDSCxrQkFBa0IsQ0FDbkIsQ0FBQztJQUNGLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQTdCRCxrQkE2QkMifQ==
|
package/lib/audit.js
CHANGED
|
@@ -54,7 +54,7 @@ function initializeWatcher(packageRoot, internalCacheFolder, logFolder, outputGl
|
|
|
54
54
|
.on("all", (event, filePath) => {
|
|
55
55
|
const logLine = `${filePath} (${event})`;
|
|
56
56
|
logger.silly(`[audit] File change: ${logLine}`);
|
|
57
|
-
if (!anymatch_1.default(outputGlob.map((glob) => path_1.default.posix.join("**", glob)), filePath)) {
|
|
57
|
+
if (!(0, anymatch_1.default)(outputGlob.map((glob) => path_1.default.posix.join("**", glob)), filePath)) {
|
|
58
58
|
changedFilesOutsideScope.push(logLine);
|
|
59
59
|
}
|
|
60
60
|
else {
|
|
@@ -85,4 +85,4 @@ async function closeWatcher(logger) {
|
|
|
85
85
|
watcher.close();
|
|
86
86
|
}
|
|
87
87
|
exports.closeWatcher = closeWatcher;
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXVkaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLHdEQUFnQztBQUNoQyxzREFBNkI7QUFDN0Isd0RBQWdDO0FBSWhDLElBQUksd0JBQXdCLEdBQWEsRUFBRSxDQUFDO0FBQzVDLElBQUksdUJBQXVCLEdBQWEsRUFBRSxDQUFDO0FBRTNDLElBQUksT0FBMkIsQ0FBQztBQUVoQyxTQUFTLG9CQUFvQixDQUFDLFdBQW1CO0lBQy9DLDhEQUE4RDtJQUM5RCxNQUFNLGNBQWMsR0FDbEIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDNUQsaUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUUxRCxJQUFJLGNBQWMsRUFBRTtRQUNsQiw2Q0FBNkM7UUFDN0MsT0FBTyxjQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUN4QztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxZQUFzQjtJQUMxQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FB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
|
package/lib/commandRunner.js
CHANGED
|
@@ -24,7 +24,7 @@ function createBuildCommand(buildCommand, clearOutput, outputGlob, logger) {
|
|
|
24
24
|
try {
|
|
25
25
|
// Set up runner
|
|
26
26
|
const tracer = logger.setTime("buildTime");
|
|
27
|
-
const runner = execa_1.default(parsedBuildCommand, {
|
|
27
|
+
const runner = (0, execa_1.default)(parsedBuildCommand, {
|
|
28
28
|
shell: true,
|
|
29
29
|
});
|
|
30
30
|
logger.pipeProcessOutput(runner.stdout, runner.stderr);
|
|
@@ -38,4 +38,4 @@ function createBuildCommand(buildCommand, clearOutput, outputGlob, logger) {
|
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
exports.createBuildCommand = createBuildCommand;
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZFJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kUnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQix3REFBMEI7QUFDMUIsb0RBQTRCO0FBTzVCLFNBQWdCLGtCQUFrQjtJQUNoQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRkQsZ0RBRUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FDaEMsWUFBaUMsRUFDakMsV0FBb0IsRUFDcEIsVUFBb0IsRUFDcEIsTUFBYztJQUVkLE9BQU8sS0FBSyxJQUFrQyxFQUFFO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLFlBQVksR0FBRyxnQkFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3QyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3hELENBQUM7U0FDSDtRQUVELElBQUk7WUFDRixnQkFBZ0I7WUFDaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFBLGVBQUssRUFBQyxrQkFBa0IsRUFBRTtnQkFDdkMsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFdkQsTUFBTSxNQUFNLENBQUM7WUFDYixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBcENELGdEQW9DQyJ9
|
package/lib/index.js
CHANGED
|
@@ -15,16 +15,16 @@ const commandRunner_1 = require("./commandRunner");
|
|
|
15
15
|
const audit_1 = require("./audit");
|
|
16
16
|
const api_1 = require("./api");
|
|
17
17
|
// Load environment variables
|
|
18
|
-
backfill_utils_dotenv_1.loadDotenv();
|
|
18
|
+
(0, backfill_utils_dotenv_1.loadDotenv)();
|
|
19
19
|
async function backfill(config, buildCommand, hashSalt, logger) {
|
|
20
20
|
const { cacheStorageConfig, name, mode, logFolder, packageRoot, producePerformanceLogs, validateOutput, } = config;
|
|
21
21
|
logger.setName(name);
|
|
22
22
|
logger.setMode(mode, mode === "READ_WRITE" ? "info" : "verbose");
|
|
23
|
-
logger.setCacheProvider(backfill_cache_1.isCustomProvider(cacheStorageConfig)
|
|
23
|
+
logger.setCacheProvider((0, backfill_cache_1.isCustomProvider)(cacheStorageConfig)
|
|
24
24
|
? cacheStorageConfig.name || "custom-storage-provider"
|
|
25
25
|
: cacheStorageConfig.provider);
|
|
26
|
-
const createPackageHash = async () => await api_1.computeHash(packageRoot, logger, hashSalt);
|
|
27
|
-
const fetch = async (hash) => await api_1.fetch(packageRoot, hash, logger, config);
|
|
26
|
+
const createPackageHash = async () => await (0, api_1.computeHash)(packageRoot, logger, hashSalt);
|
|
27
|
+
const fetch = async (hash) => await (0, api_1.fetch)(packageRoot, hash, logger, config);
|
|
28
28
|
const run = async () => {
|
|
29
29
|
try {
|
|
30
30
|
await buildCommand();
|
|
@@ -35,7 +35,7 @@ async function backfill(config, buildCommand, hashSalt, logger) {
|
|
|
35
35
|
};
|
|
36
36
|
const put = async (hash) => {
|
|
37
37
|
try {
|
|
38
|
-
await api_1.put(packageRoot, hash, logger, config);
|
|
38
|
+
await (0, api_1.put)(packageRoot, hash, logger, config);
|
|
39
39
|
}
|
|
40
40
|
catch (err) {
|
|
41
41
|
logger.error(`Failed to persist the cache with the following error:\n\n${err}`);
|
|
@@ -69,7 +69,7 @@ async function backfill(config, buildCommand, hashSalt, logger) {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
if (validateOutput) {
|
|
72
|
-
const hashOfOutput = await api_1.computeHashOfOutput(packageRoot, logger);
|
|
72
|
+
const hashOfOutput = await (0, api_1.computeHashOfOutput)(packageRoot, logger);
|
|
73
73
|
logger.setHashOfOutput(hashOfOutput);
|
|
74
74
|
}
|
|
75
75
|
if (producePerformanceLogs) {
|
|
@@ -78,13 +78,13 @@ async function backfill(config, buildCommand, hashSalt, logger) {
|
|
|
78
78
|
}
|
|
79
79
|
exports.backfill = backfill;
|
|
80
80
|
async function main() {
|
|
81
|
-
let logger = backfill_logger_1.makeLogger("info");
|
|
81
|
+
let logger = (0, backfill_logger_1.makeLogger)("info");
|
|
82
82
|
const cwd = process.cwd();
|
|
83
83
|
try {
|
|
84
|
-
const config = backfill_config_1.createConfig(logger, cwd);
|
|
84
|
+
const config = (0, backfill_config_1.createConfig)(logger, cwd);
|
|
85
85
|
const { clearOutput, internalCacheFolder, logFolder, logLevel, outputGlob, packageRoot, } = config;
|
|
86
86
|
if (logLevel) {
|
|
87
|
-
logger = backfill_logger_1.makeLogger(logLevel);
|
|
87
|
+
logger = (0, backfill_logger_1.makeLogger)(logLevel);
|
|
88
88
|
}
|
|
89
89
|
const helpString = "Backfills unchanged packages.";
|
|
90
90
|
const argv = yargs_1.default
|
|
@@ -96,13 +96,13 @@ async function main() {
|
|
|
96
96
|
description: "Compare files changed with those cached",
|
|
97
97
|
type: "boolean",
|
|
98
98
|
}).argv;
|
|
99
|
-
const buildCommand = commandRunner_1.createBuildCommand(argv["_"], clearOutput, outputGlob, logger);
|
|
99
|
+
const buildCommand = (0, commandRunner_1.createBuildCommand)(argv["_"], clearOutput, outputGlob, logger);
|
|
100
100
|
if (argv["audit"]) {
|
|
101
|
-
audit_1.initializeWatcher(packageRoot, internalCacheFolder, logFolder, outputGlob, logger);
|
|
101
|
+
(0, audit_1.initializeWatcher)(packageRoot, internalCacheFolder, logFolder, outputGlob, logger);
|
|
102
102
|
}
|
|
103
|
-
await backfill(config, buildCommand, commandRunner_1.getRawBuildCommand(), logger);
|
|
103
|
+
await backfill(config, buildCommand, (0, commandRunner_1.getRawBuildCommand)(), logger);
|
|
104
104
|
if (argv["audit"]) {
|
|
105
|
-
await audit_1.closeWatcher(logger);
|
|
105
|
+
await (0, audit_1.closeWatcher)(logger);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
catch (err) {
|
|
@@ -111,4 +111,4 @@ async function main() {
|
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
exports.main = main;
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBRTFCLGlFQUFtRDtBQUNuRCxxREFBcUQ7QUFDckQscURBQXVEO0FBQ3ZELG1EQUFzRDtBQUE3QyxzSEFBQSxtQkFBbUIsT0FBQTtBQUU1QixtREFBa0Q7QUFDbEQsbURBSXlCO0FBQ3pCLG1DQUEwRDtBQUMxRCwrQkFLZTtBQUVmLDZCQUE2QjtBQUM3QixJQUFBLGtDQUFVLEdBQUUsQ0FBQztBQUVOLEtBQUssVUFBVSxRQUFRLENBQzVCLE1BQWMsRUFDZCxZQUEwQixFQUMxQixRQUFnQixFQUNoQixNQUFjO0lBRWQsTUFBTSxFQUNKLGtCQUFrQixFQUNsQixJQUFJLEVBQ0osSUFBSSxFQUNKLFNBQVMsRUFDVCxXQUFXLEVBQ1gsc0JBQXNCLEVBQ3RCLGNBQWMsR0FDZixHQUFHLE1BQU0sQ0FBQztJQUVYLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRSxNQUFNLENBQUMsZ0JBQWdCLENBQ3JCLElBQUEsaUNBQWdCLEVBQUMsa0JBQWtCLENBQUM7UUFDbEMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSx5QkFBeUI7UUFDdEQsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FDaEMsQ0FBQztJQUVGLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FDbkMsTUFBTSxJQUFBLGlCQUFXLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRCxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFFLEVBQUUsQ0FDbkMsTUFBTSxJ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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "backfill",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.3.0",
|
|
4
4
|
"description": "Backfill CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Benjamin Weggersen <bewegger@microsoft.com>",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"anymatch": "^3.0.3",
|
|
23
|
-
"backfill-cache": "^5.
|
|
24
|
-
"backfill-config": "^6.
|
|
25
|
-
"backfill-hasher": "^6.
|
|
26
|
-
"backfill-logger": "^5.
|
|
27
|
-
"backfill-utils-dotenv": "^5.
|
|
23
|
+
"backfill-cache": "^5.10.0",
|
|
24
|
+
"backfill-config": "^6.6.0",
|
|
25
|
+
"backfill-hasher": "^6.6.0",
|
|
26
|
+
"backfill-logger": "^5.3.0",
|
|
27
|
+
"backfill-utils-dotenv": "^5.3.0",
|
|
28
28
|
"chokidar": "^3.2.1",
|
|
29
29
|
"execa": "^5.0.0",
|
|
30
30
|
"find-up": "^5.0.0",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"jest": "^29.0.0",
|
|
43
43
|
"ts-jest": "^29.0.0",
|
|
44
44
|
"ts-mockito": "^2.6.1",
|
|
45
|
-
"typescript": "~4.
|
|
45
|
+
"typescript": "~4.5.0"
|
|
46
46
|
},
|
|
47
47
|
"engines": {
|
|
48
48
|
"node": ">=14"
|