forked from aws-solutions/clickstream-analytics-on-aws
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnx.js
92 lines (86 loc) · 3.15 KB
/
nx.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
* with the License. A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
const { Component, JsonFile } = require('projen');
/**
* Custom projen component that configures nx.
*/
class Nx extends Component {
constructor(rootProject) {
super(rootProject);
// Add nx library dependencies
rootProject.addDevDeps('nx@^15', '@nrwl/devkit@^15', '@nrwl/workspace@^15');
// Add nx.json file
new JsonFile(rootProject, 'nx.json', {
obj: {
extends: 'nx/presets/npm.json',
tasksRunnerOptions: {
default: {
runner: '@nrwl/workspace/tasks-runners/default',
options: {
/*
By default nx uses a local cache to prevent
re-running targets that have not had their inputs changed
(e.g. no changes to source files).
The following specifies what targets are cacheable.
*/
cacheableOperations: ['build']
},
},
},
targetDefaults: {
build: {
/*
Specifies the build target of a project is dependent on
the build target of dependant projects (via the caret)
*/
dependsOn: ['^build'],
/*
Inputs tell nx which files can invalidate the cache should
they updated. We only want the build target cache to be
invalidated if there are changes to source files so the config
below ignores output files.
*/
inputs: [
'!{projectRoot}/test-reports/**/*',
'!{projectRoot}/coverage/**/*',
'!{projectRoot}/build/**/*',
'!{projectRoot}/dist/**/*',
'!{projectRoot}/lib/**/*',
'!{projectRoot}/cdk.out/**/*'
],
/*
Outputs tell nx where artifacts can be found. The need for
this will become more obvious when we configure github action
workflows and need to restore the nx cache for subsequent jobs
to fetch artifacts
*/
outputs: [
"{projectRoot}/dist",
"{projectRoot}/lib",
"{projectRoot}/cdk.out"
]
},
deploy: { dependsOn: ['build'] }
},
/*
This is used when running 'nx affected ....' command
to selectively run targets against only those packages
that have changed since lastest commit on origin/main
*/
affected: { defaultBase: 'origin/main' },
},
});
}
}
// Replace export statement with module.exports
module.exports = Nx;