# 추후 도전 과제
# git link : Keyboard
# 개발 환경 : HTML5, CSS, Vanilla JS, Webpack
- npm 기본 json 설치 : npm init -y
- webpack basic setting & plugin
npm i -D webpack webpack-cli webpack-dev-server
npm i
입력하면 해당 버전으로 다시 설치됨npm i -D terser-webpack-plugin
npm i -D html-webpack-plugin
npm i -D mini-css-extract-plugin css-loader css-minimizer-webpack-plugin
- webpack.config.js
entry: "./src/js/index.js",
output : {
filename : "bundle.js",
path: path.resolve(__dirname,"./dist"),
clean: true
},
devtool: "source-map",
mode: "development",
plugins: [
new HtmlWebpackPlugin({
title: "keyboard",
template: "./index.html",
inject: "body",
favicon: "./flag.svg"
}),
new MiniCssExtractPlugin({filename:"style.css"})
]
module: {
rules: [{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, "css-loader"]
}]
},
optimization: {
minimizer: [
new TerserPlugin(),
new CssMinimizerPlugin()
]
}
- package.json
"build": "webpack --mode-production"
--mode-production
"dev": "webpack-dev-server"
- 일반 실행
npx webpack
npm run build
- 개발서버 띄우기
devServer: {
host: "localhost",
port: 8080,
open: true,
watchFiles: 'index.html'
}
npx webpack-dev-server
npm run dev
npm i -D eslint
display:flex
input:checked + .slider::before {transform: translateX(26px);}
filter: invert(100%) hue-rotate(180deg);
(색 반전 흑백 변경)export class Keyboard {
#switchEl; //다크모트 버튼 객체
constructor(){
this.#aasignElement();
this.#addEvent();
}
#aasignElement(){ // 객체 가져오는 함수
this.#switchEl = document.getElementById('switch');
}
#addEvent(){ // 이벤트 실행 함수
// change 이벤트로 document에 theme 속성 적용
this.#switchEl.addEventListener("change", (event) => {
document.documentElement.setAttribute("theme",event.target.checked ? "dark-mode" : "")
})
}
}