angular-cn/tools/gulp-tasks
Pete Bacon Darwin a3c44124ab build: support generating global locale files from CLDR data (#33523)
In order to support adding locales during compile-time
inlining of translations (i.e. after the TS build has completed),
we need to be able to attach the locale to the global scope.

This commit modifies CLDR extraction to emit additional "global"
locale files that appear in the `@angular/common/locales/global` folder.

These files are of the form:

```
(function() {
  const root = typeof globalThis !== 'undefined' && globalThis ||
      typeof global !== 'undefined' && global || typeof window !== 'undefined' && window;
  root.ng = root.ng || {};
  root.ng.common = root.ng.common || {};
  root.ng.common.locale = root.ng.common.locale || {};
  const u = undefined;
  function plural(n) {
    if (n === 1) return 1;
    return 5;
  }
  root.ng.common.locale['xx-yy'] = [...];
})();
```

The IIFE will ensure that `ng.common.locale` exists and attach the
given locale (and its "extras") to it using it "normalized" locale
name.

* "extras": in the UMD module locale files the "extra" locale data,
currently the day period rules, and extended day period data, are
stored in separate files under the "common/locales/extra" folder.

* "normalized": Angular references locales using a normalized form,
which is lower case with `_` replaced by `-`. For example:
`en_UK` => `en-uk`.

PR Close #33523
2019-11-05 17:26:59 +00:00
..
cldr build: support generating global locale files from CLDR data (#33523) 2019-11-05 17:26:59 +00:00
README.md build: add the `tslint` gulp task (#14481) 2017-02-14 14:16:50 -08:00
changelog-zonejs.js docs(zone.js): update release docs instructions (#32128) 2019-08-13 16:55:03 -07:00
changelog.js ci: add ivy commits to generated CHANGELOG (#32114) 2019-08-12 16:03:37 -07:00
check-cycle.js ci: move e2e tests from travis to circleci (#27937) 2019-01-07 15:35:09 -08:00
cldr.js build: update npm dependencies (#19328) 2017-09-22 13:20:52 -07:00
format.js build: fix formatting tasks by ignoring the `zone.js/` directory (#31295) 2019-06-26 13:29:29 -07:00
lint.js feat(ivy): i18n - implement compile-time inlining (#32881) 2019-10-09 13:19:38 -07:00
platform-script-path.js build: update npm dependencies (#19328) 2017-09-22 13:20:52 -07:00
serve.js build: switch example e2e tests to bazel (#28402) 2019-01-28 19:21:09 -08:00
source-map-test.js build: update npm dependencies (#19328) 2017-09-22 13:20:52 -07:00
tools-build.js build: update npm dependencies (#19328) 2017-09-22 13:20:52 -07:00
validate-commit-message.js build: ensure fixup commits match an earlier, unmerged commit (#32023) 2019-08-09 15:12:38 -07:00

README.md

Gulp Tasks folder

This folder contains one file for each task (or group of related tasks) for the project's gulpfile. The dependencies between the tasks is kept in the gulpfile.

Task File Structure

Each task is defined by a factory function that accepts gulp as a parameter. Each file exports either one factory or an object of factories.

E.g. The build.js file contains only one task:

module.exports = (gulp) => (done) => {
  ...
};

E.g. The format.js file contains two tasks:

module.exports = {
  // Check source code for formatting errors (clang-format)
  enforce: (gulp) => () => {
    ...
  },

  // Format the source code with clang-format (see .clang-format)
  format: (gulp) => () => {
    ...
  }
};

Loading Tasks

The tasks are loaded in the gulp file, by requiring them. There is a helper called loadTask(fileName, taskName) will do this for us, where the taskName is optional if the file only exports one task.

E.g. Loading the task that will run the build, from a task file that contains only one task.

gulp.task('build.sh', loadTask('build'));

E.g. Loading the task that will enforce formatting, from a task file that contains more than one task:

gulp.task('format:enforce', loadTask('format', 'enforce'));

E.g. Loading a task that has dependencies:

gulp.task('lint', ['format:enforce', 'tools:build'], loadTask('lint'));