рдореИрдВ рд╡реЗрдмрдкреИрдХ рдмрд┐рд▓реНрдб рдореЗрдВ рдкрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ require('moment')
рд╕реАрдбреАрдПрди рд╕реЗ moment-with-locales.min.js
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореЗрд░реЗ рдмрдВрдбрд▓ рдореЗрдВ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░)ред
рдХреНрдпрд╛ рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдВрдЧреНрд░реЗрдЬреА рд▓реЛрдХреЗрд▓ рдХреЗ рд╕рд╛рде рдкрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? (рдЕрд░реНрдерд╛рддреН рд╕реАрдбреАрдПрди рд╕реЗ moment.min.js
рдХреЗ рдмрд░рд╛рдмрд░)ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдкреНрд░рд╢реНрди #2373 . рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ
рдореИрдВрдиреЗ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред рдЗрд╕ SO рдкреЛрд╕реНрдЯ рдореЗрдВ рд▓реЛрдХреЗрд╢рдВрд╕ рдХреА рдкреИрдХреЗрдЬрд┐рдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: http://stackoverflow.com/a/25426019/239965
IgnorePlugin
рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:
plugins: [
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
]
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ , рдзрдиреНрдпрд╡рд╛рдж
IgnorePlugin рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдкрд▓ рдЬреЛрдбрд╝рддреЗ рд╕рдордп 11kb gzipped рддрдХ рдиреАрдЪреЗ рд╣реВрдВред
рдлрд┐рд░ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рд▓реЛрдХреЗрд╢рдВрд╕ рдпрд╛ рд▓реЛрдХреЗрд╢рдВрд╕ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛред рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА #2373 . рд╣реИ
рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, npmjs рдкрд░ рд▓реЛрдХреЗрд╢рдВрд╕ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдХреЗрд╢рдВрд╕ рдХреЗ рдмрд┐рдирд╛ рдкрд▓ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ https://github.com/ksloan/moment-mini
moment
рд╕рд╛рде angular-cli
рдХрд░рдХреЗ рдкреВрд░реЗ рд▓реЛрдХреЗрд▓ рдХреЛ рдореЗрд░реЗ рдмрдВрдбрд▓ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ --eject
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдПрдХ https://github.com/moment/moment/issues/2416#issuecomment -111713308 рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рд▓реЛрдХреЗрд▓ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП angular-cli
рд╕рд╛рде рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?
@balexand рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдпрд╛рдж рдЖрддреА рд╣реИ, рддреЛ рдореЗрд░рд╛ рдХрд╛рдВрдЯрд╛ рдпрд╣рд╛рдВ рд╣реИ:
https://github.com/kirillgroshkov/moment-mini-ts
npm i moment-mini-ts
import * as moment from 'moment-mini-ts'
рдореЗрд░реЗ рдХреБрдЫ рдЪрдпрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ IgnorePlugin рдХреЗ рд╕рд╛рде рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, EN, ES, FR рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред рдХреНрдпрд╛ рдпрд╣ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
plugins: [
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
]
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭ рд▓рд┐рдпрд╛, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред https://stackoverflow.com/a/25426019/2477303 рдореЗрдВ рдорд┐рд▓рд╛
plugins: [
new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /en|es|fr/),
// new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
]
@ рдХреБрдирд╕реЗрд╡рд┐рдХ , рдХреНрдпрд╛ рдЖрдкрдиреЗ locale
рдХреЛ angular-cli
рд╕рд╛рде рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ?
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ рд╣реИрдХреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде moment-angular-cli-patch.js
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рд╣реИ:
'use strict';
const fs = require( 'fs' );
console.log( 'Patchin internal Angular CLI configuration ...' );
const webpackProductionConfigPath = './node_modules/@angular/cli/models/webpack-configs/production.js';
fs.readfile( webpackProductionConfigPath, 'utf-8', ( error, fileContent ) => {
const momentFix = 'extraPlugins.push( new webpack.ContextReplacementPlugin( /moment[\\/\\\\]locale$/, /de.js/ ) );';
if ( fileContent.indexOf( momentFix ) === -1 ) {
const uniqueContent = 'return {'; // Line 112
const modifiedFileContent = fileContent.replace( uniqueContent, `${ momentFix }\n ${ uniqueContent }` );
fs.writeFile( webpackProductionConfigPath, modifiedFileContent, 'utf-8', ( error ) => {
console.log( 'Done.' );
} );
} else {
console.log( 'Nothing to do.' );
}
} );
рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдкрд┐ рдЬрд░реНрдорди рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ @angular/cli 1.5.0
рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред рд╣рдорд╛рд░реА package.json
рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдЗрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ:
"scripts": {
"postinstall": "node ./moment-angular-cli-patch.js"
}
рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ...
@ рдбреЛрдорд┐рдирд┐рдХ-рдореНрдпреВрдПрд▓рд░ рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
@ рдбреЛрдорд┐рдирд┐рдХ-рдореНрдпреВрдПрд▓рд░ рдЕрднреА рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж
@ рдбреЛрдорд┐рдирд┐рдХ-рдореНрдпреВрдПрд▓рд░ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдгреАрдп рдХреНрд▓реА рдХреЗ рдмрдЬрд╛рдп рдкреИрдЪрд┐рдВрдЧ рдкрд▓ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред
const fs = require('fs');
const filePath = './node_modules/moment/moment.js';
const patch = {
find: 'var aliasedRequire = require;',
replace: 'var aliasedRequire = function(){};'
};
console.log('Patching moment');
let source = fs.readFileSync(filePath);
const index = source.indexOf(patch.find);
if (index === -1) {
console.log('Nothing to do.');
} else {
source = source.toString().replace(patch.find, patch.replace);
fs.writeFileSync(filePath, source, 'utf-8');
console.log('done');
}
@ рдбреЛрдорд┐рдирд┐рдХ-рдореНрдпреВрдПрд▓рд░ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрдгреАрдп-рдХреНрд▓реА рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдкреИрдЪ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдгреАрдп-рдХреНрд▓реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдк ' рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдкрд▓ рдХреЙрдиреНрдлрд┐рдЧ рдореЗрдВ рдкреИрдЪ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╣реЛрддрд╛ рд╣реИред
рдХреЛрдгреАрдп рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдмрдВрдбрд▓ рдореЗрдВ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдЕрдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдорд╛рди рди рд╣реЛрдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдпрд╛ рдкрд▓ рдЬреЛрдбрд╝ рд╕рдХреЗрдВ
@fergardi рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд▓реЛрдХреЗрд╢рдВрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
plugins: [
new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /(en|es|fr)$/),
]
рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЛ рд╕рднреА es-*
рд╕реНрдерд╛рди рдЬреИрд╕реЗ es-do
, es-us
рдЖрджрд┐ рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВред
рджрд░рдЕрд╕рд▓, рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдЖрдк рд╕рднреА рдХреНрд╖реЗрддреНрд░реАрдп рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг 3 рдХреЗ рдмрдЬрд╛рдп 13 рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдПрдирдЬреАрдПрдХреНрд╕-рдмрд┐рд▓реНрдб-рдкреНрд▓рд╕ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдмреЗрджрдЦрд▓ рдХрд┐рдП рдПрдбрдЬрд╕реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
@SamVerschueren рдпрд╣ рдЕрджреНрднреБрдд рд╣реИ
рдореИрдВ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдХреИрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЪреВрдВрдХрд┐ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░реЛрдб рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рджреЗ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЯреБрдХрдбрд╝реЛрдВ рджреНрд╡рд╛рд░рд╛ рднрд╛рдЧ рдмрдирд╛рдиреЗ рдХреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЕрдирджреЗрдЦрд╛/рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА? рдХреГрдкрдпрд╛ рдЗрд╕рдХреА рдереЛрдбрд╝реА рдЕрддреНрдпрд╛рд╡рд╢реНрдпрдХ рдорджрдж рдХрд░реЗрдВред рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред
рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдЕрджреНрдпрддрди рд╣реИ рдЬреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдХреЗ рдПрдХ рдореБрджреНрджреЗ рдиреЗ рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рд╣реИ https://github.com/urish/ngx-moment/issues/212
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВрдиреЗ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред рдЗрд╕ SO рдкреЛрд╕реНрдЯ рдореЗрдВ рд▓реЛрдХреЗрд╢рдВрд╕ рдХреА рдкреИрдХреЗрдЬрд┐рдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: http://stackoverflow.com/a/25426019/239965
IgnorePlugin
рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛: