使用Angular CLI在Angular项目中添加moment.js时区-Webpack

时间:2018-09-28 19:58:36

标签: angular webpack angular-cli momentjs

我需要使用angular cli / webpack在Angular项目中添加moment.js和时区构建。

我将ts-timezone导入ts文件

import * as moment from 'moment-timezone';

我用所需的脚本配置了angular.json文件

{
  "projects": {
            ..
        "styles": [],
        "scripts": [
          "node_modules/moment/moment.js",
          "node_modules/moment/locale/es.js",
          "node_modules/moment-timezone/moment-timezone.js",
          "node_modules/moment-timezone/builds/moment-timezone-with-data-2012-2022.js"
            ]
...
}

这部分起作用,但是我有两个问题:

  • 它没有添加moment-timezone-with-data-2012-2022.js
  • 当我检查在vendor.js中添加了哪些文件时,我发现所有包含的时刻和时区文件夹都包含在内

我不希望将完整文件夹添加到vendor.js。我该怎么办?

2 个答案:

答案 0 :(得分:1)

要在Angular中使用moment.js,请先安装moment.js:

npm i moment --save

然后在需要的地方导入moment.js:

import * as moment from 'moment';

现在您可以像在其他JavaScript项目中一样使用一下矩:

moment().format();

答案 1 :(得分:1)

我有同样的问题。

import * as moment from 'moment-timezone';

moment-timezonemoment中的所有内容添加到捆绑中,这意味着每个语言环境和每个时区。 我所做的只是导入我需要的东西:

import moment from 'moment-timezone/moment-timezone';
import 'moment/locale/sk';
import { MomentInput } from 'moment';

我还为DateUtils添加了静态初始化程序,并从时区构建中复制了时区的时区数据,因为我只想要一个时区:

static initialize(): void {
  moment.locale('sk');
  moment.tz.add([
    'Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5'
  ]);
  moment.tz.link('Europe/Prague|Europe/Bratislava');
  moment.tz.setDefault('Europe/Bratislava');
}

现在在整个应用程序中,仅DateUtils会导入moment东西,因此没有人应该误导入整个捆绑包。