const node = require('rollup-plugin-node-resolve'); const commonjs = require('rollup-plugin-commonjs'); // Parse the stamp file produced by Bazel from the version control system let version = ''; if (bazel_stamp_file) { const versionTag = require('fs') .readFileSync(bazel_stamp_file, {encoding: 'utf-8'}) .split('\n') .find(s => s.startsWith('BUILD_SCM_VERSION')); // Don't assume BUILD_SCM_VERSION exists if (versionTag) { version = versionTag.split(' ')[1].trim(); } } // Add 'use strict' to the bundle, https://github.com/angular/angular/pull/40456 // When rollup build esm bundle of zone.js, there will be no 'use strict' // since all esm bundles are `strict`, but when webpack load the esm bundle, // because zone.js is a module without export and import, webpack is unable // to determine the bundle is `esm` module or not, so it doesn't add the 'use strict' // which webpack does to all other `esm` modules which has export or import. // And it causes issues such as https://github.com/angular/angular/issues/40215 // `this` should be `undefined` but is assigned with `Window` instead. const banner = `'use strict'; /** * @license Angular v${version} * (c) 2010-2020 Google LLC. https://angular.io/ * License: MIT */`; module.exports = { plugins: [ node({ mainFields: ['es2015', 'module', 'jsnext:main', 'main'], }), commonjs(), ], output: {name: 'Zone', banner}, }