build: move build scripts to dedicated directory (#35780)
This commit moves the build-related scripts (`build-ivy-npm-packages.js`, `build-packages-dist.js` and `package-builder.js`) to a dedicated directory to keep the `scripts/` directory cleaner. It also moves the logic for building the `zone.js` package to a separate script, `zone-js-builder.js`, to make it re-usable. A subsequent commit will use it to build the `zone.js` package when building the Ivy Angular packages as well. PR Close #35780
This commit is contained in:
parent
2e728f7fff
commit
3f88de9407
|
@ -520,7 +520,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
- run: node scripts/build-packages-dist.js
|
- run: node scripts/build/build-packages-dist.js
|
||||||
|
|
||||||
# Save the npm packages from //packages/... for other workflow jobs to read
|
# Save the npm packages from //packages/... for other workflow jobs to read
|
||||||
- persist_to_workspace:
|
- persist_to_workspace:
|
||||||
|
@ -545,7 +545,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
- run: node scripts/build-ivy-npm-packages.js
|
- run: node scripts/build/build-ivy-npm-packages.js
|
||||||
|
|
||||||
# Save the npm packages from //packages/... for other workflow jobs to read
|
# Save the npm packages from //packages/... for other workflow jobs to read
|
||||||
- persist_to_workspace:
|
- persist_to_workspace:
|
||||||
|
|
|
@ -15,7 +15,7 @@ const PACKAGE_JSON_REGEX = /^[^/]+\/package\.json$/;
|
||||||
|
|
||||||
const ANGULAR_ROOT_DIR = path.resolve(__dirname, '../../..');
|
const ANGULAR_ROOT_DIR = path.resolve(__dirname, '../../..');
|
||||||
const ANGULAR_DIST_PACKAGES = path.join(ANGULAR_ROOT_DIR, 'dist/packages-dist');
|
const ANGULAR_DIST_PACKAGES = path.join(ANGULAR_ROOT_DIR, 'dist/packages-dist');
|
||||||
const ANGULAR_DIST_PACKAGES_BUILD_SCRIPT = path.join(ANGULAR_ROOT_DIR, 'scripts/build-packages-dist.js');
|
const ANGULAR_DIST_PACKAGES_BUILD_SCRIPT = path.join(ANGULAR_ROOT_DIR, 'scripts/build/build-packages-dist.js');
|
||||||
const ANGULAR_DIST_PACKAGES_BUILD_CMD = `"${process.execPath}" "${ANGULAR_DIST_PACKAGES_BUILD_SCRIPT}"`;
|
const ANGULAR_DIST_PACKAGES_BUILD_CMD = `"${process.execPath}" "${ANGULAR_DIST_PACKAGES_BUILD_SCRIPT}"`;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -253,7 +253,7 @@ describe('NgPackagesInstaller', () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
it('should build the local packages, when not on Windows', () => {
|
it('should build the local packages, when not on Windows', () => {
|
||||||
const buildScript = path.join(ngRootDir, 'scripts/build-packages-dist.js');
|
const buildScript = path.join(ngRootDir, 'scripts/build/build-packages-dist.js');
|
||||||
const buildCmd = `"${process.execPath}" "${buildScript}"`;
|
const buildCmd = `"${process.execPath}" "${buildScript}"`;
|
||||||
|
|
||||||
buildDistPackagesOnPlatform('linux');
|
buildDistPackagesOnPlatform('linux');
|
||||||
|
|
|
@ -4,7 +4,7 @@ Currently all changes to Ivy are validated against the test suite of the
|
||||||
`angular/components` repository. In order to debug the `components-repo-unit-tests` CI
|
`angular/components` repository. In order to debug the `components-repo-unit-tests` CI
|
||||||
job, the following steps can be used:
|
job, the following steps can be used:
|
||||||
|
|
||||||
1\) Build the Ivy package output by running `node ./scripts/build-ivy-npm-packages.js` in
|
1\) Build the Ivy package output by running `node ./scripts/build/build-ivy-npm-packages.js` in
|
||||||
the `angular/angular` repo.
|
the `angular/angular` repo.
|
||||||
|
|
||||||
2\) Clone the `angular/components` repository if not done yet ([quick link to repo](https://github.com/angular/components)).
|
2\) Clone the `angular/components` repository if not done yet ([quick link to repo](https://github.com/angular/components)).
|
||||||
|
|
|
@ -69,7 +69,7 @@ yarn install
|
||||||
To build Angular run:
|
To build Angular run:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
node ./scripts/build-packages-dist.js
|
node ./scripts/build/build-packages-dist.js
|
||||||
```
|
```
|
||||||
|
|
||||||
* Results are put in the `dist/packages-dist` folder.
|
* Results are put in the `dist/packages-dist` folder.
|
||||||
|
@ -190,7 +190,7 @@ c. Some package managers (such as `pnpm` or `yarn pnp`) might not work correctly
|
||||||
### Publishing to GitHub repos
|
### Publishing to GitHub repos
|
||||||
You can also manually publish `*-builds` snapshots just like our CircleCI build does for upstream
|
You can also manually publish `*-builds` snapshots just like our CircleCI build does for upstream
|
||||||
builds. Before being able to publish the packages, you need to build them locally by running the
|
builds. Before being able to publish the packages, you need to build them locally by running the
|
||||||
`./scripts/build-packages-dist.js` script.
|
`./scripts/build/build-packages-dist.js` script.
|
||||||
|
|
||||||
First time, you need to create the GitHub repositories:
|
First time, you need to create the GitHub repositories:
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ This directory contains end-to-end tests for Angular. Each directory is a self-c
|
||||||
that exactly mimics how a user might expect Angular to work, so they allow high-fidelity
|
that exactly mimics how a user might expect Angular to work, so they allow high-fidelity
|
||||||
reproductions of real-world issues.
|
reproductions of real-world issues.
|
||||||
|
|
||||||
For this to work, we first build the Angular distribution via `./scripts/build-packages-dist.js`, then
|
For this to work, we first build the Angular distribution via `./scripts/build/build-packages-dist.js`, then
|
||||||
install the distribution into each app.
|
install the distribution into each app.
|
||||||
|
|
||||||
To test Angular CLI applications, we use the `cli-hello-world-*` integration tests.
|
To test Angular CLI applications, we use the `cli-hello-world-*` integration tests.
|
||||||
|
|
|
@ -11,7 +11,7 @@ set -u -e -o pipefail
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
node $(pwd)/../../scripts/build-packages-dist.js
|
node $(pwd)/../../scripts/build/build-packages-dist.js
|
||||||
|
|
||||||
# Workaround https://github.com/yarnpkg/yarn/issues/2165
|
# Workaround https://github.com/yarnpkg/yarn/issues/2165
|
||||||
# Yarn will cache file://dist URIs and not update Angular code
|
# Yarn will cache file://dist URIs and not update Angular code
|
||||||
|
|
|
@ -11,7 +11,7 @@ set -u -e -o pipefail
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
node $(pwd)/../../scripts/build-packages-dist.js
|
node $(pwd)/../../scripts/build/build-packages-dist.js
|
||||||
|
|
||||||
# Workaround https://github.com/yarnpkg/yarn/issues/2165
|
# Workaround https://github.com/yarnpkg/yarn/issues/2165
|
||||||
# Yarn will cache file://dist URIs and not update Angular code
|
# Yarn will cache file://dist URIs and not update Angular code
|
||||||
|
|
|
@ -11,7 +11,7 @@ set -u -e -o pipefail
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
node $(pwd)/../../scripts/build-packages-dist.js
|
node $(pwd)/../../scripts/build/build-packages-dist.js
|
||||||
|
|
||||||
# Workaround https://github.com/yarnpkg/yarn/issues/2165
|
# Workaround https://github.com/yarnpkg/yarn/issues/2165
|
||||||
# Yarn will cache file://dist URIs and not update Angular code
|
# Yarn will cache file://dist URIs and not update Angular code
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc -p tsconfig.json",
|
"build": "tsc -p tsconfig.json",
|
||||||
"build-dist": "node ../../scripts/build-packages-dist.js && yarn install --check-files",
|
"build-dist": "node ../../scripts/build/build-packages-dist.js && yarn install --check-files",
|
||||||
"cleanup": "rm -rf ti-*.log tsserver.log",
|
"cleanup": "rm -rf ti-*.log tsserver.log",
|
||||||
"golden": "yarn build && node generate.js",
|
"golden": "yarn build && node generate.js",
|
||||||
"test": "yarn cleanup && yarn build && jasmine test.js"
|
"test": "yarn cleanup && yarn build && jasmine test.js"
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc -p tsconfig.json",
|
"build": "tsc -p tsconfig.json",
|
||||||
"build-dist": "node ../../scripts/build-packages-dist.js && yarn install --check-files",
|
"build-dist": "node ../../scripts/build/build-packages-dist.js && yarn install --check-files",
|
||||||
"test": "yarn build && node test.js"
|
"test": "yarn build && node test.js"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ set -u -e -o pipefail
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
node $(pwd)/../../scripts/build-packages-dist.js
|
node $(pwd)/../../scripts/build/build-packages-dist.js
|
||||||
|
|
||||||
# Workaround https://github.com/yarnpkg/yarn/issues/2165
|
# Workaround https://github.com/yarnpkg/yarn/issues/2165
|
||||||
# Yarn will cache file://dist URIs and not update Angular code
|
# Yarn will cache file://dist URIs and not update Angular code
|
||||||
|
|
|
@ -34,7 +34,7 @@ if $CI; then
|
||||||
else
|
else
|
||||||
# Not on CircleCI so let's build the packages-dist directory.
|
# Not on CircleCI so let's build the packages-dist directory.
|
||||||
# This should be fast on incremental re-build.
|
# This should be fast on incremental re-build.
|
||||||
node ${basedir}/scripts/build-packages-dist.js
|
node ${basedir}/scripts/build/build-packages-dist.js
|
||||||
|
|
||||||
# If we aren't running on CircleCI, we do not shard tests because this would be the job of
|
# If we aren't running on CircleCI, we do not shard tests because this would be the job of
|
||||||
# Bazel eventually. For now, we just run all tests sequentially when running locally.
|
# Bazel eventually. For now, we just run all tests sequentially when running locally.
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
// The build script used to be here but has been moved to `scripts/build/` in PR
|
||||||
|
// https://github.com/angular/angular/pull/35780. This is a temporary placeholder script for people
|
||||||
|
// that are not aware of the change and expect to find the script here.
|
||||||
|
//
|
||||||
|
// TODO: This script can be removed early May 2020.
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const {red} = require('chalk');
|
||||||
|
const {relative, resolve} = require('path');
|
||||||
|
|
||||||
|
|
||||||
|
const absoluteScriptPath = resolve(`${__dirname}/build/build-packages-dist.js`);
|
||||||
|
const relativeScriptPath = relative(process.cwd(), absoluteScriptPath);
|
||||||
|
|
||||||
|
console.error(red('ERROR: The build script has been moved to \'scripts/build/\'.'));
|
||||||
|
console.error(red(` Run: node ${relativeScriptPath}`));
|
||||||
|
|
||||||
|
process.exit(1);
|
|
@ -1,48 +0,0 @@
|
||||||
#!/usr/bin/env node
|
|
||||||
/**
|
|
||||||
* @license
|
|
||||||
* Copyright Google Inc. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Use of this source code is governed by an MIT-style license that can be
|
|
||||||
* found in the LICENSE file at https://angular.io/license
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const {chmod, cp, mkdir, rm} = require('shelljs');
|
|
||||||
const {
|
|
||||||
baseDir,
|
|
||||||
bazelBin,
|
|
||||||
bazelCmd,
|
|
||||||
buildTargetPackages,
|
|
||||||
exec,
|
|
||||||
scriptPath,
|
|
||||||
} = require('./package-builder');
|
|
||||||
|
|
||||||
|
|
||||||
// Build the legacy (view engine) npm packages into `dist/packages-dist/`.
|
|
||||||
buildTargetPackages('dist/packages-dist', false, 'Production');
|
|
||||||
|
|
||||||
// Build the `zone.js` npm package (into `dist/bin/packages/zone.js/npm_package/`), because it might
|
|
||||||
// be needed by other scripts/tests.
|
|
||||||
//
|
|
||||||
// NOTE: The `zone.js` package is not built as part of `buildTargetPackages()` above, nor is it
|
|
||||||
// copied into the `dist/packages-dist/` directory (despite its source's being inside
|
|
||||||
// `packages/`), because it is not published to npm under the `@angular` scope (as happens for
|
|
||||||
// the rest of the packages).
|
|
||||||
console.info('');
|
|
||||||
console.info('##############################');
|
|
||||||
console.info(`${scriptPath}:`);
|
|
||||||
console.info(' Building zone.js npm package');
|
|
||||||
console.info('##############################');
|
|
||||||
exec(`${bazelCmd} build //packages/zone.js:npm_package`);
|
|
||||||
|
|
||||||
// Copy artifacts to `dist/zone.js-dist/`, so they can be easier persisted on CI.
|
|
||||||
const buildOutputDir = `${bazelBin}/packages/zone.js/npm_package`;
|
|
||||||
const distTargetDir = `${baseDir}/dist/zone.js-dist/zone.js`;
|
|
||||||
|
|
||||||
console.info(`# Copy artifacts to ${distTargetDir}`);
|
|
||||||
mkdir('-p', distTargetDir);
|
|
||||||
rm('-rf', distTargetDir);
|
|
||||||
cp('-R', buildOutputDir, distTargetDir);
|
|
||||||
chmod('-R', 'u+w', distTargetDir);
|
|
|
@ -6,10 +6,11 @@
|
||||||
* Use of this source code is governed by an MIT-style license that can be
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const {buildTargetPackages} = require('./package-builder');
|
const {buildTargetPackages} = require('./package-builder');
|
||||||
|
|
||||||
|
|
||||||
// Build the ivy packages.
|
// Build the ivy packages into `dist/packages-dist-ivy-aot/`.
|
||||||
buildTargetPackages('dist/packages-dist-ivy-aot', true, 'Ivy AOT');
|
buildTargetPackages('dist/packages-dist-ivy-aot', true, 'Ivy AOT');
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const {buildZoneJsPackage} = require('./zone-js-builder');
|
||||||
|
const {buildTargetPackages} = require('./package-builder');
|
||||||
|
|
||||||
|
|
||||||
|
// Build the legacy (view engine) npm packages into `dist/packages-dist/`.
|
||||||
|
buildTargetPackages('dist/packages-dist', false, 'Production');
|
||||||
|
|
||||||
|
// Build the `zone.js` npm package into `dist/zone.js-dist/`, because it might be needed by other
|
||||||
|
// scripts/tests.
|
||||||
|
buildZoneJsPackage();
|
|
@ -31,7 +31,7 @@ set('-e');
|
||||||
|
|
||||||
|
|
||||||
/** @type {string} The absolute path to the project root directory. */
|
/** @type {string} The absolute path to the project root directory. */
|
||||||
const baseDir = resolve(`${__dirname}/..`);
|
const baseDir = resolve(`${__dirname}/../..`);
|
||||||
|
|
||||||
/** @type {string} The command to use for running bazel. */
|
/** @type {string} The command to use for running bazel. */
|
||||||
const bazelCmd = `yarn --cwd "${baseDir}" --silent bazel`;
|
const bazelCmd = `yarn --cwd "${baseDir}" --silent bazel`;
|
||||||
|
@ -47,7 +47,7 @@ const bazelBin = exec(`${bazelCmd} info bazel-bin`, true);
|
||||||
const scriptPath = relative(baseDir, require.main.filename);
|
const scriptPath = relative(baseDir, require.main.filename);
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
baseDir, bazelBin, bazelCmd, buildTargetPackages, exec, scriptPath,
|
baseDir, bazelBin, bazelCmd, buildTargetPackages, exec, scriptPath,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -93,6 +93,8 @@ function buildTargetPackages(destPath, enableIvy, description) {
|
||||||
chmod('-R', 'u+w', destDir);
|
chmod('-R', 'u+w', destDir);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.info('');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
|
@ -0,0 +1,47 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const {chmod, cp, mkdir, rm} = require('shelljs');
|
||||||
|
const {baseDir, bazelBin, bazelCmd, exec, scriptPath} = require('./package-builder');
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
buildZoneJsPackage,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the `zone.js` npm package into `dist/bin/packages/zone.js/npm_package/` and copy it to
|
||||||
|
* `dist/zone.js-dist/` for other scripts/tests to use.
|
||||||
|
*
|
||||||
|
* NOTE: The `zone.js` package is not built as part of `package-builder`'s `buildTargetPackages()`
|
||||||
|
* nor is it copied into the same directory as the Angular packages (e.g.
|
||||||
|
* `dist/packages-dist/`) despite its source's being inside `packages/`, because it is not
|
||||||
|
* published to npm under the `@angular` scope (as happens for the rest of the packages).
|
||||||
|
*/
|
||||||
|
function buildZoneJsPackage() {
|
||||||
|
console.info('##############################');
|
||||||
|
console.info(`${scriptPath}:`);
|
||||||
|
console.info(' Building zone.js npm package');
|
||||||
|
console.info('##############################');
|
||||||
|
exec(`${bazelCmd} build //packages/zone.js:npm_package`);
|
||||||
|
|
||||||
|
// Copy artifacts to `dist/zone.js-dist/`, so they can be easier persisted on CI and used by
|
||||||
|
// non-bazel scripts/tests.
|
||||||
|
const buildOutputDir = `${bazelBin}/packages/zone.js/npm_package`;
|
||||||
|
const distTargetDir = `${baseDir}/dist/zone.js-dist/zone.js`;
|
||||||
|
|
||||||
|
console.info(`# Copy artifacts to ${distTargetDir}`);
|
||||||
|
mkdir('-p', distTargetDir);
|
||||||
|
rm('-rf', distTargetDir);
|
||||||
|
cp('-R', buildOutputDir, distTargetDir);
|
||||||
|
chmod('-R', 'u+w', distTargetDir);
|
||||||
|
|
||||||
|
console.info('');
|
||||||
|
}
|
Loading…
Reference in New Issue