使用webpaack优化时区

时间:2018-11-07 20:22:28

标签: webpack momentjs

我尝试排除moment-timezone使用的Latest.json文件,并使用我自己的文件,其中仅包含您需要的时区。减少我的webpack输出。

在我尝试过的webpack config.plugins中:

new webpack.NormalModuleReplacementPlugin(
    /moment-timezone\/data\/packed\/latest\.json/,
    require.resolve('./timezones/timezone-definitions.json')
)

但没有成功。我仍然可以获取moment-timezone使用的latest.json文件。我的控制台没有任何错误。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我尝试使用webpack.NormalModuleReplacementPlugin()解决方案,但是它不起作用,然后我从下面的链接中找到了注释,并使用了别名。奏效了。

https://github.com/webpack/webpack/issues/8105#issuecomment-425823174

resolve: {
        extensions: [".ts", ".js", ".svg", ".json"],
        alias: {
            [path.resolve(__dirname, "node_modules/moment-timezone/data/packed/latest.json")]:
                path.resolve(__dirname, "src/common/timezone-definitions.json")
        }
    }

确保将.json添加到resolve.extensions数组中。

答案 1 :(得分:0)

如果您使用的是Webpack,则可能会对使用moment-timezone-data-webpack-plugin来优化时刻时区latest.json感兴趣

您可以通过以下方式限制从latest.json中包含的数据:

  • 选择年份范围
  • 选择地区,国家/地区...

包含一组区域的示例

const MomentTimezoneDataPlugin = require('moment-timezone-data-webpack-plugin');

module.exports = {
  plugins: [
    new MomentTimezoneDataPlugin({
        matchZones: [/^Australia/, 'Pacific/Auckland', 'Etc/UTC'],
        startYear: 2000,
        endYear: 2030,
    }),
  ]
};

您可以找到更多信息和示例here