처음으로 cra 를 사용하지 않고 프로젝트를 만들어 진행해 보고 있는데, 짧은 감상은 하나부터 열까지 다 직접 세팅해야 하는것이다..
번거로울수 있지만 어찌보면 나의 입맛에 맞게 프로젝트를 구성할 수 있고, 이런 공부를 할 수 있어서 좋은것 같다. 솔직히 좀 답답하긴 하지만 나름 재미있다..!
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.
See https://webpack.js.org/concepts#loaders
라는 에러 발생.
cra가 아닌 webpack으로 만든 환경에선 css나 scss를 사용하기위해 추가로 설정 필요.
yarn add style-loader css-loader sass-loader node-sass -D
webpack.config.js 에
rules :[
{
test: /\.scss$/,
use: [
"style-loader", // creates style nodes from JS strings
"css-loader", // translates CSS into CommonJS
"sass-loader" // compiles Sass to CSS, using Node Sass by default
],
}
]
를 추가해 준다.

webpack.config.js
plugins: [
new HtmlWebpackPlugin({
template: 'public/index.html',
favicon: 'src/assets/images/logo.png', << 이부분을 추가해준다.
}),
]
그리고 build를 해주면 index.html 에 favicon 링크 태그가 추가된 것을 확인할 수 있다.
yarn add file-loader -D
rules :[
{
test: /\.(png|jpe?g|gif|svg)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[path][name].[hash].[ext]',
},
},
],
},
]
declare module '*.png'
declare module '*.jpg'
declare module '*.jpeg'
//webpack.config.js
resolve: {
alias: {
'@': path.resolve(__dirname, 'src'),
},
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
src 부분을 @로 앨리어싱 해주고, extensions에 저렇게 선언함으로써 확장자를 떼어줄 수 있다.
{
"compilerOptions": {
...
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
},
...
},
"include": ["src"]
}
baseUrl은 최상단 경로를 의미하고 paths에 절대 경로 @와 그 아래 파일이라는 /* 를 명시해주고 그것과 매칭되는 주소를 배열안에 위와 같이 명시해준다. 그리고 include를 통해 src디렉토리를 포함시켜 준다.