npm init -y
: package json 초기화
npm i -D webpack wepback-cli webpack-dev-server
: webpack 패키지들 설치
webpack.config.js
entry 속성은 자바스크립트의 진입점을 나타낸다.
output속성은 build를 했을때 bundle파일 관련속성을 다룰수 있다.
devtool: 'source-map'
: build한 파일과 원본파일을 연결해주는 기능을 한다.
mode : “development” or “production”
: webpack이 build할때 production이면 코드 난독화를 시킨다.
npm i -D terser-webpack-plugin
: 이건 한번 찾아보자
html과 css관련 모듈들을 설치해 준다.
npm i -D html-webpack-plugin : 이 플러그인을 사용하게 되면 lodash 문법을 사용할 수 있게 된다.
plugins: [
new HtmlWebpackPlugin({
title: 'keyboard',
// webpack 파일 기준 상대경로에 위치한 index.html을 사용한다.
template: './index.html',
// js파일을 build했을때 bundle.js파일을 body에 넣어줄거냐 head에 넣어줄거냐 설정 가능 (기본적으로 head에 inject된다.)
inject: 'body',
favicon: './favicon.ico',
}),
],
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
css-loader
css-minimizer-webpack-plugin : CSS 사이즈를 압축하기 위한 플러그인
mini-css-extract-plugin : html에 CSS를 붙여넣기 위해서 사용하는 플러그인
따로 스크립트에 development인지, production인지 mode를 적어주지 않으면 development환경에서 build가 진행된다 → 코드의 난독화가 진행되지 않는다.
scripts": {
"test": "echo \\"Error: no test specified\\" && exit 1",
"build": "webpack --mode=production"
},
<aside> 💡 production 환경에서의 build는 컴팩트하게 최적화 시켜준다. (줄바꿈 제거 등등)
</aside>
webpack-dev-sever
devServer: {
host: 'localhost',
port: '8080',
open: true,
// index.html 변화가 있을때마다 리로드 시켜준다.
watchFiles: 'index.html',
},
Eslint : 자바스크립트 린터중 하나로, 코드를 실행하지 않아도 문법적 에러를 잡아준다.
Prettier :
npm i -D eslint
npm i -D prettier —-save-exact
: ^표시가 없이 설치가 되고, 이것은 npm i를 했을시 최신버전으로 업데이트 안하겠다 라는 것을 의미한다.
npm i -D eslint-config-prettier eslint-plugin-prettier
eslint-config-prettier
는 eslint와 prettier의 코드 포맷팅이 겹치는 부분을 없애주는 기능을한다.eslint-plugin-prettier
는 eslint에 prettier에 코드 포맷팅을 추가하는 역할npx eslint —init
: eslint 설정파일을 초기화 할수 있게 해준다.
.eslintrc.json
{
"env": {
"browser": true,
"es2021": true
},
"extends": ["eslint:recommended", **"plugin:prettier/recommend"**],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"rules": {}
}
“eslint-config-airbnb”
를 넣어주면된다.eslintIgnore
파일을 만든다.
// eslintIgnore
/node_modules
/dist
/webpack.config.js
prettier.json
파일을 만든다. → prettier 설정파일
/* 현재 요소의 색상에서 반전된 색상을 보여준다 */
filter : invert(100%);
/* 현재 요소의 색상에서 색상표의 반대편에 있는 색상을 보여줌 */
filter : hue-rotate(360deg);