Настройка WebPack с помощью Moment TimeZone CDN - PullRequest
0 голосов
/ 03 декабря 2018

Я использую WebPack 4 для создания моих TypeScript приложений.

Один из моих модулей использует библиотеку moment-timezone, например ...

import * as moment from 'moment-timezone';
$('#label-locale').text(moment.locale());

и это работает, как и ожидалось.

Чтобы лучше использовать кэширование, я хотел бы сослаться на moment и moment-timezone из Сети доставки контента (CDN) и добавил следующее на мою HTML страницу:

<script src="https://code.jquery.com/jquery-3.3.1.min.js"
        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
        crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment-with-locales.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js"></script>

Я также изменил webpack.config.js следующим образом:

module.exports = {
    externals: {
        'jquery': 'jQuery',
        'moment': 'moment-timezone'
    }
};

Теперь, когда я запускаю свой код,Я получаю следующую ошибку:

ReferenceError: timezone is not defined

Я новичок в WebPack и пробовал такие вещи, как добавление 'timezone': 'moment-timezone' к externals без успеха.

Любойпомощь / направление будет очень цениться.

1 Ответ

0 голосов
/ 03 декабря 2018

Я обдумывал это.moment-timezone на самом деле «просто» расширяет объект moment для включения moment.tz, поэтому все, что мне нужно было сделать, это изменить webpack.config.js следующим образом:

module.exports = {
    externals: {
        'jquery': 'jQuery',
        'moment-timezone': 'moment'
    }
};

Таким образом, вместо WebPack эффективно сборка всего дерева определений из node_modules/moment-timezone объекта moment уже была обновлена ​​ссылкой CDN.По крайней мере, я так думаю.

...