moment.js가 웹 팩으로 로케일을 로드하지 않도록 하는 방법
멈출 수 있는 방법은 없을까?moment.js
웹 팩을 사용할 때 모든 로케일을 로딩할 수 없습니다(영어만 필요합니다).제가 출처를 보고 있는데, 만약에hasModule
정의되어 있습니다.이것은 웹 팩용입니다.그러면 항상require()
모든 로케일이 문제를 해결하기 위해 당기기 요청이 필요할 것 같아.그런데 웹 팩 설정으로 이 문제를 해결할 수 있는 방법이 있을까요?
다음은 momentj를 로드하기 위한 웹 팩 구성입니다.
resolve: {
alias: {
moment: path.join(__dirname, "src/lib/bower/moment/moment.js")
},
},
그럼 내가 필요할 때, 난 그냥 해require('moment')
이 방법은 작동하지만 불필요한 250kB의 언어 파일을 번들에 추가합니다.그리고 저는 모멘츠나 꿀꺽꿀꺽 하는 바우어 버전을 사용하고 있습니다.
또, Web pack 설정으로 이 문제를 해결할 수 없는 경우는, 여기서 로케일을 로드하는 함수에의 링크를 참조해 주세요.추가해 보았다&& module.exports.loadLocales
에게if
웹 팩이 실제로 작동하는 방식은 아닌 것 같습니다.그냥...require
무슨 일이 있어도.지금은 정규식을 사용하는 것 같아서 어떻게 고쳐야 할지 모르겠어요.
코드require('./locale/' + name)
에 있는 모든 파일을 사용할 수 있습니다.locale
dir. 따라서 웹 팩은 모든 파일을 번들에 모듈로 포함합니다.어떤 언어를 사용하고 있는지 알 수 없습니다.
웹 팩에 번들에 포함할 모듈에 대한 자세한 정보를 제공하는 데 유용한 플러그인이 두 가지 있습니다.ContextReplacementPlugin
그리고.IgnorePlugin
.
require('./locale/' + name)
는 컨텍스트(식을 포함하는 요구 사항)라고 불립니다.webpack은 디렉토리 및 정규 표현이라는 코드 fragment에서 몇 가지 정보를 도출합니다.여기:directory = ".../moment/locale"
regular expression = /^.*$/
디폴트로는 의 모든 파일이locale
디렉토리가 포함되어 있습니다.
그ContextReplacementPlugin
그럼 추론된 정보를 덮어쓸 수 있습니다.즉, 새로운 정규 표현을 제공할 수 있습니다(포함할 언어를 선택할 수 있습니다.
또 다른 접근법은 이 요구 사항을 무시하는 것입니다.IgnorePlugin
.
다음은 예를 제시하겠습니다.
var webpack = require("webpack");
module.exports = {
// ...
plugins: [
new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /de|fr|hu/)
// new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
]
};
프로젝트에는 다음과 같은 순간이 포함되어 있습니다.import moment from 'moment/src/moment';
그게 효과가 있는 것 같아요우리의 사용법은 매우 간단하기 때문에 SDK와 모순이 없을지 모르겠습니다.WebPack은 로케일파일을 정적으로 찾는 방법을 모르기 때문에 이 방법은 유효하다고 생각합니다.따라서 경고 메시지가 나타납니다(빈 폴더를 추가하면 쉽게 숨길 수 있습니다).moment/src/lib/locale/locale
). 단, 로케일은 포함되지 않습니다.
밖에도 하고 싶은 가 많이 bsbs 、 bsbs 、 음 there 、 음음 、 음음 음 there 。
답변 ★★★★★★★★★★★★★★★★★★:
된 것 같습니다.moment
라이브러리는 절대 올라오지 않을 것이다. 하지만, 나는 https://github.com/ksloan/moment-mini을 이용하게 되었다.import * as moment from 'moment-mini';
아담 맥크릭의 대답에 따르면, 당신은 근접했고 가명을 다음과 같이 바꿨습니다.
resolve: {
alias: {
moment: 'moment/src/moment'
},
},
★★★★★★★★★★★★★★★★ webpack2
최신 버전에서는 다음 작업을 수행할 수 있습니다.
import {fn as moment} from 'moment'
에 리 and and에webpack.config.js
다음 작업을 수행합니다.
resolve: {
packageMains: ['jsnext:main', 'main']
}
NPM installer에서 포스트 인스톨 스크립트를 사용하는 다른 솔루션을 다음에 나타냅니다.
소포에 줄을 칠 수 있습니다.json 파일:
{
"scripts": {
...
"postinstall": "find node_modules/moment/locale -type f -not -name 'en-gb.js' -not -name 'pl.js' -printf '%p\\n' | xargs rm"
...
}
}
불필요한 즉시 됩니다.npm install
패키지 설치를 완료합니다.
는 ★★★★★뿐입니다.en-gb
★★★★★★★★★★★★★★★★★」pl
이치노
있는 postinstall
스크립트를 기존 명령어에 추가할 수 있습니다.
{
"scripts": {
...
"postinstall": "previous_command && find node_modules/moment/locale -type f -not -name 'en-gb.js' -not -name 'pl.js' -printf '%p\\n' | xargs rm"
...
}
}
언급URL : https://stackoverflow.com/questions/25384360/how-to-prevent-moment-js-from-loading-locales-with-webpack
'programing' 카테고리의 다른 글
누가 이 '이중 부정' 속임수를 설명할 수 있나요? (0) | 2023.01.02 |
---|---|
Vue.js에서 @keyup 핸들러를 지연시키는 방법 (0) | 2023.01.02 |
JavaScript의 Date 컨스트럭터에서 month 인수의 범위는 왜0 ~ 11 인가요? (0) | 2023.01.02 |
포스트 요청에서 JAX-RS 클라이언트의 응답 본문 읽기 (0) | 2023.01.02 |
Larabel 대기열 프로세스 시간 초과 오류 (0) | 2023.01.02 |