css 파일을 통해 스타일을 적용하는 두가지 방법에 대해 알아보도록 하겠습니다.
첫 번째는 static 폴더 내부에 css 폴더를 생성하여 연결하는 방법입니다.
<link rel="stylesheet" href="./css/main.css">
index.html에 주변에서 css폴더를 찾아 그 안에 있는 main.css를 찾을 수 있도록 link태그를 이용해 연결해줍니다.
static 폴더 내에 css 폴더를 만들고 그 안에 main.css 파일을 생성해줍니다.
개발 서버를 오픈해 확인해보면 정상적으로 작동하는 것을 확인할 수 있습니다.
두 번째 방법은 index.html 파일이 위치한 루트 경로에 css폴더를 만드는 방법입니다.
루트 경로에 css 폴더를 만들고 그 안에 main.css 파일을 생성해줍니다.
mian.js
import css from '../css/main.css'
main.js에 import 키워드를 통해 css 파일을 가져옵니다. 하지만 파일을 가져와 css라는 변수에 담아봐야 그것을 사용할 수 없기 때문에, 아래와 같이 작성할 수 있습니다.
import '../css/main.css'
⭐작동원리 이해하기
webpack.config.js
의entry: './js/main.js'
명시한 것처럼 webpack은 시행되면서main.js
파일을 먼저 읽어나갑니다. 그렇기 때문에 import 키워드로 가져온 main.css 파일이 읽힐 수 있는 구조가 만들어지게 됩니다.
하지만 webpack은 css 파일을 읽을 수 없으므로 문제가 발생하게 됩니다. 이를 해결하기 위해서 외부의 패키지를 설치해야 합니다.
$ npm i -D css-loader style-loader
설치가 완료되면 구성옵션을 webpack.config.js에 module옵션을 추가해 아래와 같이 명시 해줍니다.
webpack.config.js
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
npm run dev
로 개발 서버를 열고 확인하면, 프로젝트에 스타일이 잘 적용된 것을 볼 수 있습니다.
이번에는 SCSS가 적용될 수 있는 환경을 만들어보도록 하겠습니다.
루트 경로에 css 폴더를 만들고 그 안에 main.css 파일을 생성해줍니다.
main.js에 import 키워드를 통해 SCSS 파일을 가져옵니다.
import '../scss/main.scss'
마찬가지로 webpack은 SCSS 파일을 읽을 수 없으므로 문제가 발생하게 됩니다. 이를 해결하기 위해서 외부의 패키지를 설치해줍니다.
$ npm i -D sass-loader sass // scss 파일 관련 패키지
- sass-loader 패키지: 해당하는 scss파일을 읽어냅니다.
- sass 패키지: sass-loader 패키지를 이용해 scss파일을 읽어낼 때 그 문법을 해석할 수 있도록 돕는 패키지입니다.
설치가 완료되면 구성옵션을 webpack.config.js에 module옵션을 추가해 아래와 같이 명시 해줍니다.(순서를 꼭 맞춰줍니다.)
webpack.config.js
module: {
rules: [
{
test: /\.s?css$/, // .css 또는 .scss로 끝나는 확장자명을 찾습니다.
use: [
'style-loader',
'css-loader',
'sass-loader'
]
}
]
}
npm run dev로
개발 서버를 열고 확인하면, 프로젝트에 SCSS 파일에 입력한 스타일이 잘 적용된 것을 볼 수 있습니다.