@eui/tools 6.19.2 → 6.20.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.
Files changed (88) hide show
  1. package/.version.properties +1 -1
  2. package/CHANGELOG.md +22 -0
  3. package/bin/eui-scripts.js +2 -0
  4. package/bin/scripts/release-package-standalone.js +5 -0
  5. package/package.json +1 -1
  6. package/scripts/csdr/audit/yarn.js +15 -2
  7. package/scripts/csdr/cli/constants.js +3 -0
  8. package/scripts/csdr/cli/package-build-frontend.js +10 -0
  9. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/.eslintrc.json +43 -0
  10. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/assets/i18n/en.json +3 -0
  11. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/assets/i18n/fr.json +3 -0
  12. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/dependencies-base.json +2 -0
  13. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/dependencies-composite.json +4 -0
  14. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/gitignore_TO_REPLACE +46 -0
  15. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/karma.conf.js +7 -0
  16. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/ng-package.json +7 -0
  17. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/package.json +4 -0
  18. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/src/dummy.spec.ts.TO_REPLACE +5 -0
  19. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/src/index.ts +1 -0
  20. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/src/lib/components/main.component.html +10 -0
  21. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/src/lib/components/main.component.ts +17 -0
  22. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/src/lib/module.ts +26 -0
  23. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/src/test.ts.TO_REPLACE +21 -0
  24. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/tsconfig.lib.json +33 -0
  25. package/scripts/csdr/cli/skeletons/package/frontend/18.x/default/tsconfig.spec.json +17 -0
  26. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/.eslintrc.json +43 -0
  27. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/assets/i18n/en.json +6 -0
  28. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/assets/i18n/fr.json +6 -0
  29. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/dependencies-base.json +2 -0
  30. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/dependencies-composite.json +4 -0
  31. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/gitignore_TO_REPLACE +46 -0
  32. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/karma.conf.js +7 -0
  33. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/ng-package.json +7 -0
  34. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/package.json +4 -0
  35. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/src/dummy.spec.ts.TO_REPLACE +5 -0
  36. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/src/index.ts +2 -0
  37. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/src/lib/components/participant/participant.component.html +1 -0
  38. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/src/lib/components/participant/participant.component.ts +19 -0
  39. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/src/lib/module.ts +24 -0
  40. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/src/test.ts.TO_REPLACE +21 -0
  41. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/tsconfig.lib.json +33 -0
  42. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-default/tsconfig.spec.json +17 -0
  43. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/.eslintrc.json +79 -0
  44. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/assets/i18n/en.json +6 -0
  45. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/assets/i18n/fr.json +6 -0
  46. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/dependencies-base.json +2 -0
  47. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/dependencies-composite.json +3 -0
  48. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/gitignore_TO_REPLACE +46 -0
  49. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/karma.conf.js +7 -0
  50. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/ng-package.json +7 -0
  51. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/package.json +4 -0
  52. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/dummy.spec.ts.TO_REPLACE +5 -0
  53. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/index.ts +4 -0
  54. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/blocks/sample/components/sample.component.html +1 -0
  55. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/blocks/sample/components/sample.component.ts +14 -0
  56. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/blocks/sample/containers/container.component.ts +36 -0
  57. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/blocks/sample/models/block.model.ts +5 -0
  58. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/blocks/sample/models/index.ts +1 -0
  59. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/blocks/sample/module.ts +37 -0
  60. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/main/components/sample.component.html +1 -0
  61. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/main/components/sample.component.ts +11 -0
  62. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/main/containers/block-store.service.ts +26 -0
  63. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/main/containers/container.component.ts +42 -0
  64. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/main/models/block.model.ts +4 -0
  65. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/main/models/index.ts +1 -0
  66. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/main/module.ts +56 -0
  67. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/main/store/block.actions.ts +11 -0
  68. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/main/store/block.feature.ts +48 -0
  69. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/lib/module.ts +17 -0
  70. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/src/test.ts.TO_REPLACE +21 -0
  71. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/tsconfig.lib.json +33 -0
  72. package/scripts/csdr/cli/skeletons/package/frontend/18.x/participant-ngrx/tsconfig.spec.json +17 -0
  73. package/scripts/csdr/config/angular.js +14 -1
  74. package/scripts/csdr/config/config-skeletons.js +45 -1
  75. package/scripts/csdr/config/config-utils.js +1 -0
  76. package/scripts/csdr/config/packages.js +42 -3
  77. package/scripts/csdr/config/remotes.js +2 -0
  78. package/scripts/csdr/config/standalone.js +108 -0
  79. package/scripts/csdr/install/common.js +10 -2
  80. package/scripts/csdr/release/package/common.js +73 -45
  81. package/scripts/csdr/release/package/release-package-standalone.js +211 -0
  82. package/scripts/csdr/release/package/release-ui-standalone.js +165 -0
  83. package/scripts/index.js +3 -0
  84. package/scripts/utils/changelog-utils.js +20 -15
  85. package/scripts/utils/git-utils.js +5 -1
  86. package/scripts/utils/notification/config.js +7 -1
  87. package/scripts/utils/publish/npm.js +16 -2
  88. package/scripts/utils/sonar/sonar-utils.js +13 -4
@@ -0,0 +1,165 @@
1
+ 'use strict';
2
+
3
+ // UTILS
4
+ const utils = require('../../../utils');
5
+
6
+ // CSDR RELATED
7
+ const configUtils = require('../../config/config-utils');
8
+ const auditUtils = require('../../audit/audit-utils');
9
+ const installUtils = require('../../install/install-utils');
10
+
11
+ // INNER MODULES
12
+ const innerCommon = require('./common');
13
+
14
+
15
+ module.exports.run = () => {
16
+ // pre-requisites : package repository cloned - on gitlab script is run on the repo pipeline itself
17
+
18
+ const { dryRun } = utils.tools.getArgs();
19
+
20
+ utils.tools.logBanner('Starting UI stand-alone pipeline');
21
+
22
+ // local saved vars
23
+ let newVersion, commitsMetadata;
24
+
25
+ // getting the package information - mimics CSDR package config
26
+ const pkg = configUtils.packages.getStandalonePackage();
27
+
28
+ // get branches config
29
+ const branches = innerCommon.getBranchesFromRepo();
30
+
31
+ // get global config options
32
+ const configOptions = configUtils.standalone.getConfigOptions();
33
+
34
+ return (
35
+ Promise.resolve()
36
+
37
+ // RELEASE PACKAGE START
38
+
39
+ // Starting the release flow
40
+ .then(() => {
41
+ return innerCommon.initMessage(pkg, branches);
42
+ })
43
+
44
+ // CHECK BRANCH VALIDITY
45
+ .then(() => {
46
+ innerCommon.checkBranchValidity(branches);
47
+ })
48
+
49
+ // COMMIT METADATA CHECKS
50
+ .then(() => {
51
+ return innerCommon.commitMetadataChecks(pkg);
52
+ })
53
+ .then((metadata) => {
54
+ commitsMetadata = metadata;
55
+ })
56
+
57
+
58
+ // INIT PACKAGE CONFIG
59
+ .then(() => {
60
+ // generating angular.json config if not existing
61
+ configUtils.angular.checkAngularConfig();
62
+
63
+ // registering package angular config
64
+ configUtils.angular.registerAngularPackage(pkg);
65
+ })
66
+
67
+ // INIT ROOT FILES - yarn lock and resolution based on current eUI version of the package
68
+ // TODO - get the raw eUI version from package.json dependencies - need to test and adapt the config.global.getLocalEuiversion
69
+ // .then(() => {
70
+ // return initUtils.global.initRootFilesAndResolutions();
71
+ // })
72
+
73
+
74
+ // INSTALL dependencies by type
75
+ .then(() => {
76
+ utils.tools.logBanner('INSTALL DEPENDENCIES');
77
+
78
+ return (
79
+ Promise.resolve()
80
+ // executing install for current package - based on package.json
81
+ .then(() => {
82
+ return installUtils.common.executeInstall(process.cwd(), configOptions.NPM_REGISTRY_INSTALL);
83
+ })
84
+
85
+ // auditing dependencies
86
+ .then(() => {
87
+ return auditUtils.yarn.audit(pkg);
88
+ })
89
+ .catch((e) => {
90
+ throw e;
91
+ })
92
+ );
93
+ })
94
+
95
+ // BUILD PACKAGE
96
+ .then(() => {
97
+ return utils.buildPackage.build(pkg, branches.isMaster, false);
98
+ })
99
+
100
+ // EXECUTING SONAR ANALYSIS
101
+ .then(() => {
102
+ return utils.sonar.run(pkg, branches.isMaster);
103
+ })
104
+
105
+ // GENERATE and UPDATE new version
106
+ .then(() => {
107
+ return innerCommon.updateVersion(pkg, commitsMetadata);
108
+ })
109
+ .then((version) => {
110
+ // storing version for later use
111
+ newVersion = version;
112
+ })
113
+
114
+ // GENERATE CHANGELOG
115
+ .then(() => {
116
+ utils.tools.logTitle('generating changelog...');
117
+ return utils.changelog.generate(pkg, newVersion, commitsMetadata.commits);
118
+ })
119
+
120
+ // WRITE CHANGELOG for MASTER and SUPPORT
121
+ .then((changelogContent) => {
122
+ utils.tools.logTitle('writing changelog...');
123
+
124
+ if ((branches.isSupport || branches.isNext || branches.isMaster) && !dryRun) {
125
+ return utils.changelog.writeChangelog(changelogContent, pkg.paths.root);
126
+
127
+ } else {
128
+ utils.tools.logInfo('WRITING SKIPPED - (either DRY-RUN or snapshot release) - Actual changelog :');
129
+ console.log(changelogContent);
130
+ }
131
+ })
132
+
133
+ // PUBLISH PACKAGE
134
+ .then(() => {
135
+ return utils.publish.publish(pkg);
136
+ })
137
+
138
+ // GIT OPERATIONS
139
+ .then(() => {
140
+ return innerCommon.commitPackage(pkg, newVersion, branches);
141
+ })
142
+ .then(() => {
143
+ return innerCommon.tagAndMerge(pkg, newVersion, branches);
144
+ })
145
+
146
+ // SEND SUCCESS NOTIFICATION
147
+ .then(() => {
148
+ return innerCommon.sendSuccessNotification(pkg, newVersion, commitsMetadata, false).then(() => {
149
+ return innerCommon.close(pkg);
150
+ });
151
+ })
152
+
153
+ // SEND ERROR NOTIFICATION
154
+ .catch((e) => {
155
+ return innerCommon
156
+ .sendErrorNotification(pkg, e, commitsMetadata, false)
157
+ .then(() => {
158
+ return innerCommon.close(pkg);
159
+ })
160
+ .then(() => {
161
+ process.exit(1);
162
+ });
163
+ })
164
+ );
165
+ };
package/scripts/index.js CHANGED
@@ -91,12 +91,15 @@ module.exports.cliPackageConstants = require('./csdr/cli/constants');
91
91
 
92
92
  // csdr - config
93
93
  module.exports.configAngular = require('./csdr/config/angular');
94
+ module.exports.configSkeletons = require('./csdr/config/config-skeletons');
94
95
  module.exports.configUtils = require('./csdr/config/config-utils');
95
96
  module.exports.configGlobal = require('./csdr/config/global');
96
97
  module.exports.configInit = require('./csdr/config/init');
97
98
  module.exports.configPackages = require('./csdr/config/packages');
98
99
  module.exports.configProjects = require('./csdr/config/projects');
99
100
  module.exports.configRegister = require('./csdr/config/register');
101
+ module.exports.configRemotes = require('./csdr/config/remotes');
102
+ module.exports.configStandalone = require('./csdr/config/standalone');
100
103
  module.exports.configSync = require('./csdr/config/sync');
101
104
 
102
105
  // csdr -init
@@ -32,18 +32,24 @@ const TYPES = {
32
32
 
33
33
  module.exports.generate = (pkg, version, commits) => {
34
34
 
35
- var content = [];
36
- var date = new Date().toJSON().slice(0, 10);
37
- var heading = '##';
35
+ let content = [];
36
+ let date = new Date().toJSON().slice(0, 10);
37
+ let heading = '##';
38
38
 
39
- var repoUrl;
39
+ let repoUrl;
40
40
 
41
41
  heading += ' ' + version + ' (' + date + ')';
42
42
 
43
43
  content.push(heading);
44
44
  content.push('');
45
45
 
46
- const iSSUES_MANAGER_HOST = configUtils.global.getConfigOptions().ISSUES_MANAGER_HOST;
46
+ let ISSUES_MANAGER_HOST;
47
+
48
+ if (pkg.standalone) {
49
+ ISSUES_MANAGER_HOST = configUtils.standalone.getConfigOptions().ISSUES_MANAGER_HOST;
50
+ } else {
51
+ ISSUES_MANAGER_HOST = configUtils.global.getConfigOptions().ISSUES_MANAGER_HOST;
52
+ }
47
53
 
48
54
  return Promise.resolve()
49
55
  .then(() => {
@@ -53,15 +59,15 @@ module.exports.generate = (pkg, version, commits) => {
53
59
  repoUrl = repoUrlFound;
54
60
  })
55
61
  .then(() => {
56
- var types = {}
62
+ let types = {}
57
63
 
58
64
  commits.forEach((commit) => {
59
- var type = TYPES[commit.type] ? commit.type : DEFAULT_TYPE;
65
+ let type = TYPES[commit.type] ? commit.type : DEFAULT_TYPE;
60
66
 
61
67
  if (commit.body && commit.body.indexOf('BREAKING CHANGE') !== -1) {
62
68
  type = 'breakingChange';
63
69
  }
64
- var category = commit.category ? commit.category : DEFAULT_CATEGORY;
70
+ let category = commit.category ? commit.category : DEFAULT_CATEGORY;
65
71
 
66
72
  types[type] = types[type] || {};
67
73
  types[type][category] = types[type][category] || [];
@@ -71,7 +77,7 @@ module.exports.generate = (pkg, version, commits) => {
71
77
  return types;
72
78
  })
73
79
  .then((rawTypes) => {
74
- var types = rawTypes;
80
+ let types = rawTypes;
75
81
 
76
82
  Object.keys(rawTypes).sort().forEach((type) => {
77
83
 
@@ -79,23 +85,22 @@ module.exports.generate = (pkg, version, commits) => {
79
85
  content.push('');
80
86
 
81
87
  Object.keys(rawTypes[type]).forEach(function (category) {
82
- var prefix = '*';
83
- var nested = types[type][category].length > 1;
84
- var categoryHeading = prefix + (category ? ' **' + category + ':**' : '');
88
+ let prefix = '*';
89
+ let categoryHeading = prefix + (category ? ' **' + category + ':**' : '');
85
90
 
86
91
  content.push(categoryHeading);
87
92
  prefix = ' *';
88
93
 
89
94
  types[type][category].forEach(function (commit) {
90
95
 
91
- var shorthash = commit.hash.substring(0, 8);
96
+ let shorthash = commit.hash.substring(0, 8);
92
97
  if (repoUrl) {
93
98
  shorthash = '[' + shorthash + '](' + repoUrl + '/commits/' + commit.hash + ')';
94
99
  }
95
100
 
96
- var issueString = '';
101
+ let issueString = '';
97
102
  if (commit.issue) {
98
- issueString += '[' + commit.issue + '](' + iSSUES_MANAGER_HOST + commit.issue + ') ';
103
+ issueString += '[' + commit.issue + '](' + ISSUES_MANAGER_HOST + commit.issue + ') ';
99
104
  }
100
105
 
101
106
  content.push(prefix + ' ' + commit.subject + ' ' + issueString + ' (' + shorthash + ')');
@@ -30,7 +30,10 @@ const getLastTag = (folder) => {
30
30
  });
31
31
  }
32
32
 
33
-
33
+ const getBranchName = (folder = process.cwd()) => {
34
+ const branchName = execa.sync('git', ['rev-parse','--abbrev-ref', 'HEAD'], { cwd: folder }).stdout;
35
+ return branchName;
36
+ }
34
37
 
35
38
  const getRepoUrl = (folder) => {
36
39
  return Promise.resolve()
@@ -425,6 +428,7 @@ module.exports.getGitHost = getGitHost;
425
428
  module.exports.getLastTag = getLastTag;
426
429
  module.exports.getTags = getTags;
427
430
  module.exports.hasCommitsSinceLastTag = hasCommitsSinceLastTag;
431
+ module.exports.getBranchName = getBranchName;
428
432
  module.exports.commitAndPush = commitAndPush;
429
433
  module.exports.tagVersion = tagVersion;
430
434
  module.exports.mergeMasterToDevelop = mergeMasterToDevelop;
@@ -10,7 +10,13 @@ const configUtils = require('../../csdr/config/config-utils');
10
10
 
11
11
  module.exports.getPackageConfig = (pkg) => {
12
12
  // Fetching global config - default if not overriden in package own config
13
- const globalConfig = configUtils.global.getConfigOptions();
13
+ let globalConfig;
14
+
15
+ if (pkg.standalone) {
16
+ globalConfig = configUtils.standalone.getConfigOptions();
17
+ } else {
18
+ globalConfig = configUtils.global.getConfigOptions();
19
+ }
14
20
 
15
21
  let slackChannel, msTeamsChannel;
16
22
 
@@ -109,7 +109,13 @@ const publishCore = module.exports.publishCore = (pkg, registry, isPublicAccess)
109
109
 
110
110
  const publishPackage = (pkg, parentPkg) => {
111
111
 
112
- const configOptions = configUtils.global.getConfigOptions();
112
+ let configOptions;
113
+
114
+ if (pkg.standalone) {
115
+ configOptions = configUtils.standalone.getConfigOptions();
116
+ } else {
117
+ configOptions = configUtils.global.getConfigOptions();
118
+ }
113
119
 
114
120
  let pkgPublicRegistry;
115
121
 
@@ -192,7 +198,15 @@ module.exports.publish = (pkg) => {
192
198
 
193
199
  } else {
194
200
  // building normal package without linked children
195
- const pkgFull = configUtils.packages.getPackage(pkg.name); // TO CHECK
201
+ let pkgFull;
202
+
203
+ if (pkg.standalone) {
204
+ pkgFull = pkg;
205
+
206
+ } else {
207
+ pkgFull = configUtils.packages.getPackage(pkg.name); // TO CHECK
208
+ }
209
+
196
210
  return publishPackage(pkgFull);
197
211
  }
198
212
 
@@ -21,9 +21,11 @@ const { branch, dryRun, sonarQubeToken } = tools.getArgs();
21
21
  const runCore = (pkg, isMaster) => {
22
22
 
23
23
  // check at metadata global flag level if enabled
24
- if (!configUtils.global.isSonarEnabled()) {
25
- tools.logInfo('Sonar scanner globally disabled');
26
- return Promise.resolve();
24
+ if (!pkg.standalone) {
25
+ if (!configUtils.global.isSonarEnabled()) {
26
+ tools.logInfo('Sonar scanner globally disabled');
27
+ return Promise.resolve();
28
+ }
27
29
  }
28
30
 
29
31
  // check at package config level if enabled
@@ -115,7 +117,14 @@ const runUI = (pkg, isMaster) => {
115
117
  .then(() => {
116
118
  if (!dryRun) {
117
119
  tools.logInfo('Calling Sonar scanner...');
118
- const SONAR_HOST = configUtils.global.getConfigOptions().SONAR_HOST;
120
+
121
+ let SONAR_HOST;
122
+ if (pkg.standalone) {
123
+ SONAR_HOST = configUtils.standalone.getConfigOptions().SONAR_HOST;
124
+ } else {
125
+ SONAR_HOST = configUtils.global.getConfigOptions().SONAR_HOST;
126
+ }
127
+
119
128
  return execa.shellSync(`sonar-scanner -Dsonar.branch.name=${branch} -Dsonar.host.url=${SONAR_HOST} -Dsonar.login=${sonarQubeToken}`, { cwd: pkg.paths.root, stdio: 'inherit' });
120
129
  }
121
130
  })