๋ชฉ์ฐจ
2023.05.01 - [๐ | WEB DEV/Electron] - [Electron] 0. Electron์ด๋? & ์ด๊ธฐ์ค์
Electron์ JS๊ธฐ๋ฐ ํ๋ ์์ํฌ์ด๊ธฐ ๋๋ฌธ์ React ์ญ์ ํจ๊ป ํ์ฉํ ์ ์๋ค.
์ ๋ฒ ํฌ์คํธ์์ ์งํํ ํ๋ก์ ํธ์ React๋ฅผ ํ์ฌํด๋ณด์!
1. React ํจํค์ง ์ถ๊ฐํ๊ธฐ
npm install --save react react-dom
์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์น๊ฐ ์๋ฃ๋ ๊ฒฝ์ฐ package.json์๋ ์ด์ฒ๋ผ ์ถ๊ฐ๊ฐ ๋๋ค.
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
}
2. ์์คํ์ผ ๋ง๋ค๊ธฐ
main_react๋ผ๋ ์ด๋ฆ์ผ๋ก jsํ์ผ์ ์์ฑํ์๋ค. (์ด๋ฆ์ ์์ ์์ฑ)
main_react.js
import React from 'react';
import ReactDom from 'react-dom';
ReactDom.render(<h1>Hello React App</h1>, document.getElementById('root'));
3. ์นํฉ์ฉ ํจํค์ง ์ถ๊ฐ
npm install --save-dev @babel/core @babel/preset-env @babel/preset-react babel-loader css-loader style-loader sass-loader sass webpack webpack-cli
๋ฆฌ์กํธ๋ฅผ ๋ชจ๋ ๋ฒ๋ค๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ์นํฉ์์ ๊ตฌ๋ํ๊ธฐ ์ํด์
๊ด๋ จ ํจํค์ง๋ค์ ์ถ๊ฐํ๋ค.
4. webpack.common.js ์ถ๊ฐ
webpack ๊ตฌ๋์ ์ํ ํ์ผ์ ์์ฑํ๋ค.
const path = require('path');
module.exports = {
mode: 'development',
entry: './src/js/main_react.js',
devtool: 'inline-source-map',
target: 'electron-renderer',
// ํ๋ก์ ํธ ๋ด ๋ชจ๋ ์ฒ๋ฆฌ ๋ฐฉ์ ์ค์
module: {
rules: [
// ํ
์คํธ ํต๊ณผํ ๋ชจ๋ ์ ์
{
// ๋ก๋
test: /\.js$/,
// ์ ์ธํ ๋ชจ๋ ์ ์
exclude: /node_modules/,
// ๋ก๋์ค์ธ ๋ชจ๋ ์ค๋ช
use: {
loader: 'babel-loader',
// ๋ก๋ ์ต์
options: {
presets: [[
'@babel/preset-env', {
targets: {
esmodules: true
}
}],
'@babel/preset-react']
}
}
},
{
// css ๊ด๋ จ
test: [/\.s[ac]ss$/i, /\.css$/i],
use: [
// Creates `style` nodes from JS strings
'style-loader',
// Translates CSS into CommonJS
'css-loader',
// Compiles Sass to CSS
'sass-loader',
],
}
]
},
// ์ค์ ์ต์
resolve: {
// ํด์ํ ํ์ผ ์ค์
extensions: ['.js'],
},
// ์ถ๋ ฅ ์ค์
output: {
// ํ์ผ๋ช
filename: 'app.js',
// ํ์ผ๊ฒฝ๋ก
path: path.resolve(__dirname, 'build', 'js'),
},
};
6. package.json์ scripts์ watch ์ถ๊ฐ
"scripts": {
"watch": "webpack --config webpack.common.js --watch",
}
scripts์ watch๋ฅผ ์ถ๊ฐํ๋ค.
7. ์คํฌ๋ฆฝํธ ์คํ
npm run watch
์คํฌ๋ฆฝํธ์ ์ ์ํ watch ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด build/js/app.js ๊ฐ ์์ฑ๋๋ค.
8. index.html์ app.js ์ถ๊ฐ
index.html ํ์ผ์ body ํ๊ทธ ์์ app.js๋ฅผ ๊ฐ์ ธ์จ๋ค.
<body>
<div id="root"></div>
<script src="../../build/js/app.js"></script>
</body>
์์ ๊ฐ์ ํํ๋ก app.js๋ฅผ ๊ฐ์ ธ์จ๋ค.
9. ์์
npm start
์์ ๋ช ๋ น์ด๋ก ์ฑ์ ๊ตฌ๋ํ๋ค.
'๐ | WEB DEV > Electron' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Electron] 0. Electron์ด๋? & ์ด๊ธฐ์ค์ (0) | 2023.05.01 |
---|
๋๊ธ