September 09, 2020
개발자 도구로 살펴보니, svg
라는 클래스에 width: 20px
style이 전역으로 적용되고 있었습니다.
오픈소스 컨트리뷰톤에서 활동중이던 차에 직접 PR을 올려볼까? 하는 생각이 스쳤습니다. 그래서 다짜고짜 nuxtjs.org repo를 fork했습니다.
dev 모드에선 해당 이슈가 없었는데 prod 모드에서 이슈가 재현되었고, svg class
가 어디에서 오는건지 찾아봤습니다.
찾아보니, AppModal.vue
이라는 컴포넌트에 있었습니다. 여기서 주목할만한 점은 style
이 전역으로 적용되고 있었다는 점입니다.
정확한 빌드과정은 모르겠지만, 스타일이 전역으로 적용되면서 html
태그안에 class
로 들어간 것 같았습니다.
그래서 svg class
가 다른데에서도 쓰이나 전체검색을 해봤는데, AppModal.vue
에서 밖에 쓰이지 않았습니다. (여기서 저는 마음속으로 소리를 질렀습니다.)
style
에 scoped
속성을 주고 빌드를 해보니 html
태그에서 svg class
가 빠지는 것을 확인할 수 있었습니다.
./components/global/bases/AppModal.vue
...
<style>
.svg {
width: 20px;
color: black;
}
...
그렇게 PR을 올릴까 하다가 혹시 몰라서 디렉토리 안의 다른 파일들도 살펴보았는데, BaseAlert.vue
컴포넌트도 똑같이 scoped
적용이 되어있지 않았습니다.
이것을 바탕으로 다음 PR을 작성했습니다.
https://github.com/nuxt/nuxtjs.org/pull/639
PR template이 따로 없어서, 어떤 현상인지, 어떻게 고쳤는지, 제 생각을 작성했습니다.
maintainer가 이슈를 재현할 순 없지만, 위의 스타일들이 scoped되어야 하는 것은 동의한다고 merge 해주셨습니다.