@vamship/build-utils 1.6.1 → 2.0.0-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.
Files changed (66) hide show
  1. package/package.json +40 -40
  2. package/src/directory.js +20 -24
  3. package/src/index.js +5 -17
  4. package/src/project.js +160 -433
  5. package/src/schema/project-definition.js +137 -0
  6. package/src/task-builder.js +100 -0
  7. package/src/task-builders/build-js-task-builder.js +57 -0
  8. package/src/task-builders/build-task-builder.js +78 -0
  9. package/src/task-builders/build-ts-task-builder.js +63 -0
  10. package/src/task-builders/build-ui-task-builder.js +45 -0
  11. package/src/task-builders/clean-task-builder.js +39 -0
  12. package/src/task-builders/copy-files-task-builder.js +78 -0
  13. package/src/task-builders/docs-js-task-builder.js +74 -0
  14. package/src/task-builders/docs-task-builder.js +74 -0
  15. package/src/task-builders/docs-ts-task-builder.js +52 -0
  16. package/src/task-builders/format-task-builder.js +61 -0
  17. package/src/task-builders/index.js +21 -17
  18. package/src/task-builders/lint-fix-task-builder.js +61 -0
  19. package/src/task-builders/lint-task-builder.js +56 -0
  20. package/src/task-builders/not-supported-task-builder.js +48 -0
  21. package/src/task-builders/package-aws-task-builder.js +105 -0
  22. package/src/task-builders/package-container-task-builder.js +132 -0
  23. package/src/task-builders/package-npm-task-builder.js +83 -0
  24. package/src/task-builders/package-task-builder.js +101 -0
  25. package/src/task-builders/publish-aws-task-builder.js +111 -0
  26. package/src/task-builders/publish-container-task-builder.js +103 -0
  27. package/src/task-builders/publish-npm-task-builder.js +60 -0
  28. package/src/task-builders/publish-task-builder.js +98 -0
  29. package/src/task-builders/test-task-builder.js +85 -0
  30. package/src/task-builders/test-ui-task-builder.js +65 -0
  31. package/src/task-builders/watch-task-builder.js +109 -0
  32. package/src/task-factories/api-task-factory.js +67 -0
  33. package/src/task-factories/aws-microservice-task-factory.js +53 -0
  34. package/src/task-factories/cli-task-factory.js +68 -0
  35. package/src/task-factories/container-task-factory.js +64 -0
  36. package/src/task-factories/index.js +8 -0
  37. package/src/task-factories/lib-task-factory.js +52 -0
  38. package/src/task-factories/ui-task-factory.js +48 -0
  39. package/src/task-factory.js +52 -0
  40. package/src/utils/semver-utils.js +29 -0
  41. package/src/utils/task-factory-utils.js +70 -0
  42. package/src/task-builders/build/build-js.js +0 -66
  43. package/src/task-builders/build/build-ts.js +0 -70
  44. package/src/task-builders/build/build-types.js +0 -47
  45. package/src/task-builders/build/build-ui.js +0 -67
  46. package/src/task-builders/build/index.js +0 -60
  47. package/src/task-builders/clean.js +0 -57
  48. package/src/task-builders/docs/docs-js.js +0 -41
  49. package/src/task-builders/docs/docs-ts.js +0 -40
  50. package/src/task-builders/docs/index.js +0 -32
  51. package/src/task-builders/format.js +0 -58
  52. package/src/task-builders/lint.js +0 -56
  53. package/src/task-builders/package/index.js +0 -50
  54. package/src/task-builders/package/package-aws.js +0 -58
  55. package/src/task-builders/package/package-docker.js +0 -128
  56. package/src/task-builders/package/package-npm.js +0 -25
  57. package/src/task-builders/package/package-types.js +0 -54
  58. package/src/task-builders/package/utils.js +0 -50
  59. package/src/task-builders/publish/index.js +0 -50
  60. package/src/task-builders/publish/publish-aws.js +0 -62
  61. package/src/task-builders/publish/publish-docker.js +0 -79
  62. package/src/task-builders/publish/publish-npm.js +0 -36
  63. package/src/task-builders/publish/publish-types.js +0 -36
  64. package/src/task-builders/test/index.js +0 -39
  65. package/src/task-builders/test/test-ui.js +0 -39
  66. package/src/task-builders/test/test.js +0 -67
@@ -1,50 +0,0 @@
1
- 'use strict';
2
-
3
- const _gulp = require('gulp');
4
-
5
- /**
6
- * Builder function that can be used to generate a gulp task to package a
7
- * project for distribution. The task takes on different implementations based
8
- * on project types. For example, javascript libraries will yield an archive
9
- * resulting from an `npm pack`, while docker enabled projects will result in
10
- * the creation of a docker image.
11
- *
12
- * @param {Object} project Reference to an object that contains project metadata
13
- * that can be used to customize build outputs.
14
- * @param {Object} options An options object that can be used to customize the
15
- * task.
16
- *
17
- * @returns {Function} A gulp task.
18
- */
19
- module.exports = (project, options) => {
20
- const { types } = options;
21
- let createTask = null;
22
-
23
- if (types) {
24
- if (!project.hasExportedTypes) {
25
- return;
26
- }
27
- createTask = require('./package-types');
28
- } else if (project.projectType === 'aws-microservice') {
29
- createTask = require('./package-aws');
30
- } else if (project.hasDocker) {
31
- createTask = require('./package-docker');
32
- } else if (project.projectType === 'lib' || project.projectType === 'cli') {
33
- createTask = require('./package-npm');
34
- }
35
-
36
- const task = createTask(project, options);
37
-
38
- if (!(task instanceof Array)) {
39
- if (types) {
40
- task.displayName = 'package-types';
41
- task.description =
42
- 'Create a distribution package for the types exported by the project';
43
- } else {
44
- task.displayName = 'package';
45
- task.description = 'Create a distribution package for the project';
46
- }
47
- }
48
-
49
- return task;
50
- };
@@ -1,58 +0,0 @@
1
- 'use strict';
2
-
3
- const _gulp = require('gulp');
4
- const _zip = require('gulp-zip');
5
- const _execa = require('execa');
6
-
7
- /**
8
- * Sub builder that packages an aws-microservice project for deployment. This
9
- * follows the build steps described for
10
- * [lambda deployments](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-create-deployment-pkg.html#nodejs-package-dependencies)
11
- *
12
- * @private
13
- * @param {Object} project Reference to an object that contains project metadata
14
- * that can be used to customize build outputs.
15
- * @param {Object} options An options object that can be used to customize the
16
- * task.
17
- *
18
- * @returns {Function} A gulp task.
19
- */
20
- module.exports = (project, options) => {
21
- const { snakeCasedName, version, rootDir } = project;
22
- const workingDir = rootDir.getChild('working');
23
-
24
- const packageName = `${snakeCasedName}-${version}.zip`;
25
-
26
- const installTask = () => {
27
- const npmBin = 'npm';
28
- const args = ['install', '--production'];
29
-
30
- return _execa(npmBin, args, {
31
- stdio: 'inherit',
32
- cwd: workingDir.absolutePath,
33
- });
34
- };
35
-
36
- installTask.displayName = 'package-aws-install';
37
- installTask.description = 'Install package dependency in working directory';
38
-
39
- const dirs = ['src', 'node_modules'];
40
- const extras = ['package.json', project.configFileName];
41
-
42
- const paths = dirs
43
- .map((dir) => workingDir.getChild(dir))
44
- .flatMap((dir) => [dir.getAllFilesGlob(), dir.getAllHiddenFilesGlob()])
45
- .concat(extras.map((file) => workingDir.getFileGlob(file)));
46
-
47
- const zipTask = () =>
48
- _gulp
49
- .src(paths, { allowEmpty: true, base: workingDir.globPath })
50
- .pipe(_zip(packageName))
51
- .pipe(_gulp.dest(rootDir.getChild('dist').absolutePath));
52
-
53
- zipTask.displayName = 'package-aws-zip';
54
- zipTask.description =
55
- 'Create a project distribution for AWS lambda deployments';
56
-
57
- return _gulp.series([installTask, zipTask]);
58
- };
@@ -1,128 +0,0 @@
1
- 'use strict';
2
-
3
- const _execa = require('execa');
4
- const _gulp = require('gulp');
5
- const _log = require('fancy-log');
6
- const _mkdirp = require('mkdirp');
7
-
8
- /**
9
- * Sub builder that builds a docker image based on a predefined dockerfile.
10
- *
11
- * @private
12
- * @param {Object} project Reference to an object that contains project metadata
13
- * that can be used to customize build outputs.
14
- * @param {Object} options An options object that can be used to customize the
15
- * task.
16
- *
17
- * @returns {Function} A gulp task.
18
- */
19
- module.exports = (project, options) => {
20
- const {
21
- unscopedName,
22
- version,
23
- description,
24
- configFileName,
25
- jsRootDir,
26
- rootDir,
27
- } = project;
28
-
29
- const dockerBin = 'docker';
30
-
31
- const tasks = project.getDockerTargets().map((target) => {
32
- const { name, buildFile, buildArgs, isDeprecated, isDefault } = target;
33
-
34
- const suffix = isDefault ? '' : `-${name}`;
35
- const targetName = isDefault ? '' : name;
36
-
37
- let repo = target.repo;
38
- if (typeof process.env.BUILD_DOCKER_REPO !== 'undefined') {
39
- repo = process.env.BUILD_DOCKER_REPO;
40
- _log.warn(`Docker repo override specified: [${repo}]`);
41
- }
42
-
43
- if (isDeprecated) {
44
- _log.warn(
45
- '[WARNING] Docker package task configuration is deprecated. Please upgrade to the newer format'
46
- );
47
- _log.warn(
48
- '[WARNING] See: https://github.com/vamship/build-utils#upgrading-to-v03x for more information'
49
- );
50
- }
51
-
52
- const buildTaskArgs = [
53
- 'build',
54
- '--rm',
55
- '--file',
56
- buildFile,
57
- '--tag',
58
- `${repo}:latest`,
59
- '--build-arg',
60
- `APP_NAME=${unscopedName}`,
61
- '--build-arg',
62
- `APP_VERSION=${version}`,
63
- '--build-arg',
64
- `APP_DESCRIPTION='${description}'`,
65
- '--build-arg',
66
- `CONFIG_FILE_NAME=${configFileName}`,
67
- '--build-arg',
68
- `BUILD_TIMESTAMP=${Date.now()}`,
69
- ];
70
-
71
- project.validateRequiredEnv();
72
- buildArgs.forEach(({ name, value }) => {
73
- buildTaskArgs.push('--build-arg');
74
- buildTaskArgs.push(`${name}=${value}`);
75
- });
76
-
77
- buildTaskArgs.push('.');
78
-
79
- const buildTask = () =>
80
- _execa(dockerBin, buildTaskArgs, {
81
- stdio: 'inherit',
82
- cwd: jsRootDir.absolutePath,
83
- });
84
- buildTask.displayName = `package-build${suffix}`;
85
- buildTask.description = `Builds a docker image (${targetName}) based on the Dockerfile contained in the project`;
86
-
87
- const tasks = [buildTask];
88
-
89
- if (process.env.BUILD_EXPORT_DOCKER_IMAGE === 'true') {
90
- _log.warn(`Docker save image enabled.`);
91
-
92
- const distDir = rootDir.getChild('dist');
93
- const savePath = distDir.getFilePath(`image${suffix}.tar`);
94
-
95
- const ensureDirTask = () => {
96
- _log.info(
97
- `Ensuring that output path exists: ${distDir.absolutePath}`
98
- );
99
- return _mkdirp(distDir.absolutePath);
100
- };
101
- ensureDirTask.displayName = `package-save${suffix}`;
102
- ensureDirTask.description = `Ensures that destination directory (${savePath}) exists.`;
103
- tasks.push(ensureDirTask);
104
-
105
- const saveTask = () => {
106
- _log.info(
107
- `Docker save enabled. File will be created at: ${savePath}`
108
- );
109
- return _execa(dockerBin, ['save', '--output', savePath, repo], {
110
- stdio: 'inherit',
111
- cwd: jsRootDir.absolutePath,
112
- });
113
- };
114
- saveTask.displayName = `package-save${suffix}`;
115
- ensureDirTask.description = `Saves a tar file that represents the docker image`;
116
- tasks.push(saveTask);
117
- }
118
-
119
- const task = _gulp.series(tasks);
120
-
121
- task.displayName = `package${suffix}`;
122
- task.description = `Builds a docker image (${targetName}) based on the Dockerfile contained in the project`;
123
-
124
- return task;
125
- });
126
-
127
- return tasks;
128
- };
@@ -1,25 +0,0 @@
1
- 'use strict';
2
-
3
- const { createNpmPackageTask } = require('./utils');
4
-
5
- /**
6
- * Sub builder that packages a project using npm pack, from source files or
7
- * compiled typescript files.
8
- *
9
- * @private
10
- * @param {Object} project Reference to an object that contains project metadata
11
- * that can be used to customize build outputs.
12
- * @param {Object} options An options object that can be used to customize the
13
- * task.
14
- *
15
- * @returns {Function} A gulp task.
16
- */
17
- module.exports = (project, options) => {
18
- const { snakeCasedName, version, rootDir, jsRootDir } = project;
19
-
20
- const packageName = `${snakeCasedName}-${version}.tgz`;
21
- const packageDir = jsRootDir;
22
- const distDir = rootDir.getChild('dist');
23
-
24
- return createNpmPackageTask(packageDir, packageName, distDir);
25
- };
@@ -1,54 +0,0 @@
1
- 'use strict';
2
-
3
- const _gulp = require('gulp');
4
- const _execa = require('execa');
5
- const _path = require('path');
6
- const _fs = require('fs');
7
-
8
- const { createNpmPackageTask } = require('./utils');
9
-
10
- /**
11
- * Sub builder that packages the types exported by a project using npm pack. A
12
- * custom package.json file is generated for the types.
13
- *
14
- * @private
15
- * @param {Object} project Reference to an object that contains project metadata
16
- * that can be used to customize build outputs.
17
- * @param {Object} options An options object that can be used to customize the
18
- * task.
19
- *
20
- * @returns {Function} A gulp task.
21
- */
22
- module.exports = (project, options) => {
23
- const { name, snakeCasedName, version, license, keywords, rootDir } =
24
- project;
25
-
26
- const packageName = `${snakeCasedName}-types-${version}.tgz`;
27
- const packageDir = rootDir
28
- .getChild('working')
29
- .getChild(project.exportedTypes);
30
- const distDir = rootDir.getChild('dist');
31
-
32
- const createPackageJsonTask = (cb) =>
33
- _fs.writeFile(
34
- packageDir.getFilePath('package.json'),
35
- JSON.stringify({
36
- name: `${name}-types`,
37
- version,
38
- description: `Types for project ${name}`,
39
- license,
40
- keywords,
41
- }),
42
- cb
43
- );
44
- createPackageJsonTask.displayName = 'package-types-packagejson';
45
- createPackageJsonTask.description =
46
- 'Creates a package.json file for the types';
47
-
48
- const packTask = createNpmPackageTask(packageDir, packageName, distDir);
49
- packTask.displayName = 'package-types-npm';
50
- packTask.description =
51
- 'Creates an NPM package for the types exported by the project';
52
-
53
- return _gulp.series([createPackageJsonTask, packTask]);
54
- };
@@ -1,50 +0,0 @@
1
- 'use strict';
2
-
3
- const _delete = require('delete');
4
- const _execa = require('execa');
5
- const _gulp = require('gulp');
6
-
7
- /**
8
- * Utility function that initializes and returns an array of tasks for npm
9
- * package/publish operations.
10
- *
11
- * @param {Directory} packageDir The directory in which the package will be
12
- * created.
13
- * @param {String} packageName The name of the package that is being created.
14
- * @param {Directory} targetDir The directory to which the package will be
15
- * deployed.
16
- *
17
- * @returns {Function} A gulp task that creates the package.
18
- */
19
- module.exports.createNpmPackageTask = function (
20
- packageDir,
21
- packageName,
22
- targetDir
23
- ) {
24
- const npmBin = 'npm';
25
- const args = ['pack'];
26
- const packageFile = packageDir.getFileGlob(packageName);
27
-
28
- const packTask = () =>
29
- _execa(npmBin, args, {
30
- stdio: 'inherit',
31
- cwd: packageDir.absolutePath,
32
- });
33
-
34
- packTask.displayName = 'package-npm';
35
- packTask.description = 'Create a project distribution using npm';
36
-
37
- const copyTask = () =>
38
- _gulp.src(packageFile).pipe(_gulp.dest(targetDir.absolutePath));
39
-
40
- copyTask.displayName = 'package-npm-copy';
41
- copyTask.description =
42
- 'Copies the project package to the distribution directory';
43
-
44
- const deleteTask = () => _delete(packageFile);
45
- deleteTask.displayName = 'package-npm-delete';
46
- deleteTask.description =
47
- 'Deletes the original packge, leaving just the one in the distribution directory';
48
-
49
- return _gulp.series([packTask, copyTask, deleteTask]);
50
- };
@@ -1,50 +0,0 @@
1
- 'use strict';
2
-
3
- const _gulp = require('gulp');
4
-
5
- /**
6
- * Builder function that can be used to generate a gulp task to publish a
7
- * package. The task takes on different implementations based on project types.
8
- * For example, javascript libraries will be published to an npm registry, using
9
- * `npm publish`, while docker enabled projects will result in a docker image
10
- * being published to a docker registry.
11
- *
12
- * @param {Object} project Reference to an object that contains project metadata
13
- * that can be used to customize build outputs.
14
- * @param {Object} options An options object that can be used to customize the
15
- * task.
16
- *
17
- * @returns {Function} A gulp task.
18
- */
19
- module.exports = (project, options) => {
20
- const { types } = options;
21
- let createTask = null;
22
-
23
- if (types) {
24
- if (!project.hasExportedTypes) {
25
- return;
26
- }
27
- createTask = require('./publish-types');
28
- } else if (project.projectType === 'aws-microservice') {
29
- createTask = require('./publish-aws');
30
- } else if (project.hasDocker) {
31
- createTask = require('./publish-docker');
32
- } else if (project.projectType === 'lib' || project.projectType === 'cli') {
33
- createTask = require('./publish-npm');
34
- }
35
-
36
- const task = createTask(project, options);
37
-
38
- if (!(task instanceof Array)) {
39
- if (types) {
40
- task.displayName = 'publish-types';
41
- task.description =
42
- 'Publish the types exported by this project to a repository';
43
- } else {
44
- task.displayName = 'publish';
45
- task.description = 'Publish the package to a repository';
46
- }
47
- }
48
-
49
- return task;
50
- };
@@ -1,62 +0,0 @@
1
- 'use strict';
2
-
3
- const _gulp = require('gulp');
4
- const _zip = require('gulp-zip');
5
- const _execa = require('execa');
6
-
7
- /**
8
- * Sub builder that packages an aws-microservice project for deployment. This
9
- * follows the build steps described for
10
- * [lambda deployments](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-create-deployment-pkg.html#nodejs-package-dependencies)
11
- *
12
- * @private
13
- * @param {Object} project Reference to an object that contains project metadata
14
- * that can be used to customize build outputs.
15
- * @param {Object} options An options object that can be used to customize the
16
- * task.
17
- *
18
- * @returns {Function} A gulp task.
19
- */
20
- module.exports = (project, options) => {
21
- const { name, version, rootDir } = project;
22
- const infraDir = rootDir.getChild('infra');
23
- const workingDir = rootDir.getChild('working');
24
-
25
- const packageName = `${name.replace(/\//g, '-')}-${version}.zip`;
26
-
27
- const cdkBin = 'cdk';
28
-
29
- const tasks = project.getCdkStacks().map((key) => {
30
- const envFiles = [
31
- infraDir.getFileGlob(`.env.${process.env.INFRA_ENV}`),
32
- infraDir.getFileGlob('.env'),
33
- ];
34
-
35
- const args = [
36
- 'deploy',
37
- project.getCdkStackName(key),
38
- '--app',
39
- `"node ${workingDir.getFileGlob('infra/index')}"`,
40
- ];
41
-
42
- if (process.env.INFRA_NO_PROMPT === 'true') {
43
- args.splice(1, 0, '--require-approval=never');
44
- }
45
-
46
- const task = () => {
47
- project.initEnv(envFiles);
48
- project.validateRequiredEnv();
49
-
50
- return _execa(cdkBin, args, {
51
- stdio: 'inherit',
52
- });
53
- };
54
-
55
- task.displayName = `publish-${key}`;
56
- task.description = `Publishes the ${key} stack to AWS using CDK`;
57
-
58
- return task;
59
- });
60
-
61
- return tasks;
62
- };
@@ -1,79 +0,0 @@
1
- 'use strict';
2
-
3
- const _execa = require('execa');
4
- const _gulp = require('gulp');
5
- const _log = require('fancy-log');
6
- const _semver = require('semver');
7
-
8
- /**
9
- * Sub builder that builds a docker image based on a predefined dockerfile.
10
- *
11
- * @private
12
- * @param {Object} project Reference to an object that contains project metadata
13
- * that can be used to customize build outputs.
14
- * @param {Object} options An options object that can be used to customize the
15
- * task.
16
- *
17
- * @returns {Function} A gulp task.
18
- */
19
- module.exports = (project, options) => {
20
- const { version } = project;
21
-
22
- const dockerBin = 'docker';
23
- const major = _semver.major(version);
24
- const minor = _semver.minor(version);
25
-
26
- const tasks = project.getDockerTargets().map((target) => {
27
- const { name, isDefault, isDeprecated } = target;
28
- const { latestOnly } = options;
29
-
30
- let repo = target.repo;
31
- if (typeof process.env.BUILD_DOCKER_REPO !== 'undefined') {
32
- repo = process.env.BUILD_DOCKER_REPO;
33
- _log.warn(`Docker repo override specified: [${repo}]`);
34
- }
35
-
36
- let suffix = `${isDefault ? '' : '-name'}${
37
- latestOnly ? '-latest' : ''
38
- }`;
39
-
40
- const tagList = latestOnly
41
- ? ['latest']
42
- : [version, major, `${major}.${minor}`];
43
-
44
- const tags = tagList.map((tag) => `${repo}:${tag}`);
45
- const latestTag = `${repo}:latest`;
46
-
47
- const tasks = tags.map((tag) => {
48
- const tagTask = () =>
49
- _execa(dockerBin, ['tag', latestTag, tag], {
50
- stdio: 'inherit',
51
- });
52
- tagTask.displayName = `publish-docker-tag-${tag}${suffix}`;
53
- tagTask.description = `Tag image with ${tag} (${name})`;
54
-
55
- const pushTask = () =>
56
- _execa(dockerBin, ['push', tag], {
57
- stdio: 'inherit',
58
- });
59
- pushTask.displayName = `publish-docker-push-${tag}${suffix}`;
60
- pushTask.description = `Publish docker image with ${tag} (${name}) to registry`;
61
-
62
- const task = _gulp.series([tagTask, pushTask]);
63
- task.displayName = `publish-docker-${tag}${suffix}`;
64
- task.description = `Tag and push image with ${tag} (${name})`;
65
-
66
- return task;
67
- });
68
-
69
- const task = _gulp.parallel(tasks);
70
- task.displayName = `publish${suffix}`;
71
- task.description = latestOnly
72
- ? `Tags image ${name} with latest tag and pushes to registry`
73
- : `Tags image ${name} with version tags, and pushes to registry`;
74
-
75
- return task;
76
- });
77
-
78
- return tasks;
79
- };
@@ -1,36 +0,0 @@
1
- 'use strict';
2
-
3
- const _gulp = require('gulp');
4
- const _execa = require('execa');
5
-
6
- /**
7
- * Sub builder that publishes a project using npm publish.
8
- *
9
- * @private
10
- * @param {Object} project Reference to an object that contains project metadata
11
- * that can be used to customize build outputs.
12
- * @param {Object} options An options object that can be used to customize the
13
- * task.
14
- *
15
- * @returns {Function} A gulp task.
16
- */
17
- module.exports = (project, options) => {
18
- const { snakeCasedName, version, rootDir } = project;
19
-
20
- const packageName = `${snakeCasedName}-${version}.tgz`;
21
-
22
- const npmBin = 'npm';
23
- const args = ['publish', packageName];
24
-
25
- const publishTask = () =>
26
- _execa(npmBin, args, {
27
- stdio: 'inherit',
28
- cwd: rootDir.getChild('dist').absolutePath,
29
- });
30
-
31
- publishTask.displayName = 'publish-npm';
32
- publishTask.description =
33
- 'Publish an existing package to an npm repository';
34
-
35
- return _gulp.parallel(publishTask);
36
- };
@@ -1,36 +0,0 @@
1
- 'use strict';
2
-
3
- const _gulp = require('gulp');
4
- const _execa = require('execa');
5
-
6
- /**
7
- * Sub builder that publishes a project using npm publish.
8
- *
9
- * @private
10
- * @param {Object} project Reference to an object that contains project metadata
11
- * that can be used to customize build outputs.
12
- * @param {Object} options An options object that can be used to customize the
13
- * task.
14
- *
15
- * @returns {Function} A gulp task.
16
- */
17
- module.exports = (project, options) => {
18
- const { snakeCasedName, version, rootDir } = project;
19
-
20
- const packageName = `${snakeCasedName}-types-${version}.tgz`;
21
-
22
- const npmBin = 'npm';
23
- const args = ['publish', packageName];
24
-
25
- const publishTask = () =>
26
- _execa(npmBin, args, {
27
- stdio: 'inherit',
28
- cwd: rootDir.getChild('dist').absolutePath,
29
- });
30
-
31
- publishTask.displayName = 'publish-npm-types';
32
- publishTask.description =
33
- 'Publish an existing package to an npm repository';
34
-
35
- return _gulp.parallel([publishTask]);
36
- };
@@ -1,39 +0,0 @@
1
- 'use strict';
2
-
3
- const _gulp = require('gulp');
4
-
5
- /**
6
- * Builder function that can be used to generate a gulp task to execute
7
- * instrumented unit/api tests.
8
- *
9
- * @param {Object} project Reference to an object that contains project metadata
10
- * that can be used to customize build outputs.
11
- * @param {Object} options An options object that can be used to customize the
12
- * task.
13
- *
14
- * @returns {Function} A gulp task.
15
- */
16
- module.exports = (project, options) => {
17
- const { testType, watch } = Object.assign(
18
- { testType: 'unit', watch: false },
19
- options
20
- );
21
- const tasks = [];
22
- if (project.projectType !== 'ui') {
23
- const nonUiTests = require('./test');
24
- tasks.push(nonUiTests(project, options));
25
- } else {
26
- const uiTests = require('./test-ui');
27
- tasks.push(uiTests(project, options));
28
- }
29
- const task = _gulp.parallel(tasks);
30
- if (!watch) {
31
- task.displayName = `test-${testType}`;
32
- task.description = `Execute ${testType} tests`;
33
- } else {
34
- task.displayName = `watch-test-${testType}`;
35
- task.description = `Automatically execute ${testType} tests on change`;
36
- }
37
-
38
- return task;
39
- };