이전 포스팅에서 미리 구성된 프론트엔드 템플릿(create react app)을 이용하여
비주얼 스튜디오의 디버거에 연결하는 작업을 했습니다.
이제 직접 웹팩을 구성하여 비주얼 스튜디오의 디버거에 연결하는 작업을 해보겠습니다.
이 부분은 이전 포스팅의 '1. 'SpaProxy' 설치 및 설정'의 부분과 동일합니다.
참고 : [ASP.NET Core 6] 비주얼 스튜디오에서 'NPM' 프로젝트 디버깅 - 프론트 엔드(Front-end) 템플릿 사용
모든 파일을 수작업으로 작성합니다.
인터넷에서 구할 수 있는 간단한 샘플을 만들어 넣을 예정입니다.
(참고 : 웹팩 핸드북 - 웹팩 데브 서버)
프로젝트 루트에 'ClientApp'폴더를 생성해 줍니다.
ClientApp > package.json
파일을 생성하고 아래와 같이 작성합니다.
{
"name": "clientapp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
},
"devDependencies": {
"html-webpack-plugin": "^5.5.0",
"webpack": "^5.74.0",
"webpack-cli": "^4.10.0",
"webpack-dev-server": "^4.10.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack serve"
},
"keywords": [],
"author": "",
"license": "ISC"
}
ClientApp > webpack.config.js
파일을 생성하고 아래와 같이 작성합니다.
var path = require('path');
var HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
module.exports = {
mode: 'none',
entry: './index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
devtool: "inline-source-map",
devServer: {
port: 9000,
},
plugins: [
new webpack.SourceMapDevToolPlugin({}),
new HtmlWebpackPlugin({
// index.html 템플릿을 기반으로 빌드 결과물을 추가해줌
template: 'index.html',
}),
],
};
12번 줄 : 'devtool'은 소스맵을 생성하는 아무 옵션이나 사용해도 됩니다.
17번 줄 : 비주얼 스튜디오가 소스맵을 이용하여 디버깅을 하므로 'SourceMapDevToolPlugin'을 무조건 사용해야 합니다.
ClientApp > index.html
파일을 생성하고 아래 코드를 넣습니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Webpack Dev Server</title>
</head>
<body>
<!-- 빌드 결과물이 정상적으로 로딩되면 아래 div 태그의 텍스트가 변경됨 -->
<div class="container">
TBD..
</div>
<!-- HTML Webpack Plugin에 의해 웹팩 빌드 내용이 아래에 추가됨 -->
</body>
</html>
ClientApp > index.js
파일을 생성하고 아래 코드를 넣습니다.
var div = document.querySelector('.container');
div.innerText = 'Webpack loaded!!';
ClientApp > index.js
파일의 2번 줄에 중단점을 설정합니다.
실행해 봅시다.
중단점이 잘 잡히네요.
실행은 잘되는데 중단점이 잡히지 않는다면 'wwwroot'폴더가 있는지 확인해 보고
없으면 생성해 줍니다.
(참고 : [ASP.NET Core 6] 웹팩(webpack)에서 중단점(breakpoint)이 잡히지 않는다? )
테스트 프로젝트 : github - dang-gun/AspDotNetSamples/WebpackBreakpointTest/
비주얼 스튜디오로 ASP.NET Core + Webpack 설정과 디버깅까지 연결하는 긴 여정이 마무리되었습니다.
(사실 SSL 연결이 남긴 함 ㅋ)
포트와 'wwwroot'의 환장의 콜라보레이션과 '.NET 5'에서 바뀐 각종 SPA 설정 때문에
자료가 없고 있어도 예전 버전 기준이라 쓸 수 없는것들 뿐이었습니다.
이걸 한땀한땀 정리해둔 자료는 왜 없는 걸까요?