如何从角度构建中排除时刻语言环境?

Shi*_*kha 14 angular2-moment angular

在我的 angular 5 应用程序中,当我使用

ng build --prod --sm
Run Code Online (Sandbox Code Playgroud)

和开源地图浏览器,moment 在 main.js 文件中占用了大量空间。我发现使用时所有语言环境都已加载

import * as moment from 'moment';
Run Code Online (Sandbox Code Playgroud)

我已经将材料力矩适配器用于应用程序中也需要力矩包的某些功能。

我已经使用 angular-cli 创建了应用程序。我发现许多使用 webpack.config.js 中的设置排除语言环境的链接有没有办法使用 angular-cli 排除语言环境?

Dmi*_*nko 11

这篇文章描述了很好的解决方案:https : //medium.jonasbandi.net/angular-cli-and-moment-js-a-recipe-for-disaster-and-how-to-fix-it-163a79180173

简要地:

  1. ng add ngx-build-plus

  2. 在项目的根目录中添加一个文件 webpack.extra.js:

    const webpack = require('webpack');
    module.exports = {
        plugins: [
            new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
        ]
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 跑:

    npm run build --prod --extra-webpack-config webpack.extra.js
    
    Run Code Online (Sandbox Code Playgroud)

    在此处输入代码

警告 moment.js 已正式弃用 https://momentjs.com/docs/#/-project-status/(尝试使用 day.js 或 luxon)

  • moment.js 已弃用? (2认同)

小智 5

如果您不想使用任何第三方库,最简单的方法是在tsconfig.json文件的compilerOptions中添加以下内容

"paths": {
  "moment": [
    "../node_modules/moment/min/moment.min.js"
  ]
}
Run Code Online (Sandbox Code Playgroud)

  • 如果使用时刻时区,我无法使其与此解决方案一起使用。 (4认同)