2020-02-29 15:25:49 -05:00
|
|
|
/**
|
|
|
|
* @license
|
2020-05-19 15:08:49 -04:00
|
|
|
* Copyright Google LLC All Rights Reserved.
|
2020-02-29 15:25:49 -05:00
|
|
|
*
|
|
|
|
* 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';
|
|
|
|
|
2020-02-29 14:05:23 -05:00
|
|
|
const {resolve} = require('path');
|
2020-08-31 00:48:41 -04:00
|
|
|
const {chmod, cp, mkdir, mv, rm, test} = require('shelljs');
|
|
|
|
const zonePackageJson = require('../../packages/zone.js/package.json');
|
2020-02-29 15:25:49 -05:00
|
|
|
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
|
2020-02-29 14:05:23 -05:00
|
|
|
* `destPath` for other scripts/tests to use.
|
2020-02-29 15:25:49 -05:00
|
|
|
*
|
|
|
|
* 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).
|
2020-02-29 14:05:23 -05:00
|
|
|
*
|
|
|
|
* @param {string} destPath Path to the output directory into which we copy the npm package.
|
|
|
|
* This path should either be absolute or relative to the project root.
|
2020-02-29 15:25:49 -05:00
|
|
|
*/
|
2020-02-29 14:05:23 -05:00
|
|
|
function buildZoneJsPackage(destPath) {
|
2020-02-29 15:25:49 -05:00
|
|
|
console.info('##############################');
|
|
|
|
console.info(`${scriptPath}:`);
|
|
|
|
console.info(' Building zone.js npm package');
|
|
|
|
console.info('##############################');
|
2020-12-08 14:06:17 -05:00
|
|
|
exec(`${bazelCmd} build //packages/zone.js:npm_package`);
|
2020-02-29 15:25:49 -05:00
|
|
|
|
2020-02-29 14:05:23 -05:00
|
|
|
// Create the output directory.
|
|
|
|
const absDestPath = resolve(baseDir, destPath);
|
|
|
|
if (!test('-d', absDestPath)) mkdir('-p', absDestPath);
|
|
|
|
|
|
|
|
// Copy artifacts to `destPath`, so they can be easier persisted on CI and used by non-bazel
|
|
|
|
// scripts/tests.
|
2020-02-29 15:25:49 -05:00
|
|
|
const buildOutputDir = `${bazelBin}/packages/zone.js/npm_package`;
|
2020-02-29 14:05:23 -05:00
|
|
|
const distTargetDir = `${absDestPath}/zone.js`;
|
2020-02-29 15:25:49 -05:00
|
|
|
|
2020-12-08 14:06:17 -05:00
|
|
|
// Also create an archive so we can test the package itself.
|
|
|
|
// Currently, the `npm_package.pack` rule does not work on Windows, so run `npm pack` directly.
|
|
|
|
exec(`npm pack ${buildOutputDir}`, false, {cwd: baseDir});
|
|
|
|
|
2020-08-31 00:48:41 -04:00
|
|
|
console.info(`# Copy npm_package artifacts to ${distTargetDir}`);
|
2020-02-29 15:25:49 -05:00
|
|
|
rm('-rf', distTargetDir);
|
|
|
|
cp('-R', buildOutputDir, distTargetDir);
|
|
|
|
chmod('-R', 'u+w', distTargetDir);
|
|
|
|
|
2020-08-31 00:48:41 -04:00
|
|
|
// Copy `zone.js.tgz` to `destPath`, so we can test
|
|
|
|
// the archive generated by the `npm_package.pack` rule.
|
|
|
|
const distArchiveTargetDir = `${absDestPath}/archive`;
|
|
|
|
console.info(`# Copy npm_package archive file to ${distArchiveTargetDir}`);
|
|
|
|
rm('-rf', distArchiveTargetDir);
|
|
|
|
mkdir('-p', distArchiveTargetDir);
|
|
|
|
mv(`${baseDir}/zone.js-${zonePackageJson.version}.tgz`, `${distArchiveTargetDir}/zone.js.tgz`);
|
|
|
|
|
2020-02-29 15:25:49 -05:00
|
|
|
console.info('');
|
|
|
|
}
|