[Bundler] Webpack Static, Module, SCSS
1. 정적 파일 연결
https://www.icoconverter.com/에서 원하는 이미지 변경
- 원본 이미지와 변환된 이미지를 프로젝트 폴더 루트 경로에 복사
- static 폴더를 생성하고 favicon.ico와 원본 이미지를 이 폴더에 넣어줌
- static 폴더 안에 images 폴더를 생성하고 원본 이미지를 이 폴더에 넣어줌
<!-- index.html -->
<body>
<h1>Hello Webpack!!</h1>
<img src="./images/bear.jpg" alt="Bear">
</body>
# terminal
$ npm i -D copy-webpack-plugin
// webpack.config.js
const path = require('path')
const HtmlPlugin = require('html-webpack-plugin')
const CopyPlugin = require('copy-webpack-plugin')
module.exports = {
entry: './js/main.js',
output: {
clean: true
},
plugins: [
new HtmlPlugin({
template: './index.html'
}),
// static 폴더 안의 내용이 copy되어 dist폴더로 들어가는 plugin
new CopyPlugin({
patterns: [
{ from: 'static' }
]
})
],
devServer: {
host: 'localhost'
}
}
# terminal
$ npm run dev
2. Module
static 폴더 안에 css 폴더 생성하고 main.css 파일 생성
/* static/css/main.css */
body {
background-color: orange;
}
<!-- index.html -->
<head>
<title>Hello Webpack!</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reset-css@5.0.1/reset.min.css">
<link rel="stylesheet" href="./css/main.css">
</head>
# terminal
$ npm run dev
루트 경로에 css 폴더 생성하고 main.css 파일 생성
/* css/main.css */
body {
background-color: orange;
}
// js/main.js
import '../css/main.css'
console.log('Webpack!')
CSS 파일을 읽을 수 있는 패키지 설치
# terminal
$ npm i -D css-loader style-loader
// webpack.config.js
const path = require('path')
const HtmlPlugin = require('html-webpack-plugin')
const CopyPlugin = require('copy-webpack-plugin')
module.exports = {
entry: './js/main.js',
output: {
clean: true
},
module: {
rules: [
{
test: /\.css$/, // .css로 끝나는 파일
use: [ // 순서 중요!!
'style-loader', // HTML의 style 태그에 해석된 내용을 삽입하는 용도
'css-loader' // Javascript에서 css파일을 해석하는 용도
]
}
]
},
plugins: [
new HtmlPlugin({
template: './index.html'
}),
new CopyPlugin({
patterns: [
{ from: 'static' }
]
})
],
devServer: {
host: 'localhost'
}
}
# terminal
$ npm run dev
3. SCSS
루트 경로에 scss 폴더 생성하고 main.scss 파일 생성
# terminal
$ npm i -D sass-loader sass
/* scss/main.css */
$color--black: #000;
$color--white: #fff;
body {
background-color: $color--black;
h1 {
color: $color--white;
font-size: 50px;
}
}
// js/main.js
import '../scss/main.scss'
console.log('Webpack!')
// webpack.config.js
const path = require('path')
const HtmlPlugin = require('html-webpack-plugin')
const CopyPlugin = require('copy-webpack-plugin')
module.exports = {
entry: './js/main.js',
output: {
clean: true
},
module: {
rules: [
{
test: /\.s?css$/, // .scss or .css로 끝나는 파일
use: [
'style-loader',
'css-loader',
'sass-loader' // Webpack에서 scss파일을 읽어내는 용도
]
}
]
},
plugins: [
new HtmlPlugin({
template: './index.html'
}),
new CopyPlugin({
patterns: [
{ from: 'static' }
]
})
],
devServer: {
host: 'localhost'
}
}
# terminal
$ npm run dev
댓글남기기