UNPKG

build-plugin-moment-locales

Version:

build-scripts plugins for moment locale

46 lines 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var magic_string_1 = require("magic-string"); var pluginutils_1 = require("@rollup/pluginutils"); // moment.js 中存在 require('./locale/' + name),在 webpack 模式下会全量打包 // vite 模式自动注入 `import 'moment/dist/locale/zh-cn'` 语言包 exports.default = (function (locales) { var entryJs = ''; var include = ['**/*.ts', '**/*.js', '**/*.tsx', '**/*.jsx']; var exclude = 'node_modules/**'; var momentRegex = /moment[/\\]locale[/\\]/; var filter = (0, pluginutils_1.createFilter)(include, exclude); var momentLocales = typeof locales === 'string' ? [locales] : locales; var needSourcemap = false; return { name: 'vite-plugin-moment', enforce: 'pre', configResolved: function (resolvedConfig) { needSourcemap = !!resolvedConfig.build.sourcemap; }, resolveId: function (id) { // use esm if (id.match(momentRegex)) { // moment/dist/locale/ 目录下为 esm 产物 return id.replace(momentRegex, 'moment/dist/locale/'); } }, transform: function (code, id) { if (!entryJs && filter(id)) { entryJs = id; } if (entryJs === id && momentLocales) { // 自动注入 locale,如果源码中已依赖,构建打包后会被去重 var s_1; var str = function () { return s_1 || (s_1 = new magic_string_1.default(code)); }; str().prependLeft(0, momentLocales.map(function (locale) { return "import 'moment/dist/locale/" + locale + "';"; }).join('\n') + "\n"); return { map: needSourcemap ? str().generateMap({ hires: true }) : null, code: str().toString(), }; } return null; } }; }); //# sourceMappingURL=vitePluginMoment.js.map