# Vue CLI๋ก ์์ฑํ ํ๋ก์ ํธ์ ์นํฉ ์ค์ ๋ฐฉ๋ฒ
Vue CLI๋ก ์์ฑํ ํ๋ก์ ํธ์ ์นํฉ ์ค์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์นํฉ ์ค์ ํ์ธ & ๋ณ๊ฒฝ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ด ๋๋ค.
# Vue CLI๋ก ์์ฑํ ํ๋ก์ ํธ์ ์นํฉ์ ๊ด๊ณ?
๋ณดํต Vue.js๋ฅผ ๋ฐฐ์ฐ๊ณ ๋๋ฉด ์ค์ ์๋น์ค๋ฅผ ๋ง๋ค ๋ ๋ทฐ CLI๋ฅผ ์ด์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ํ ๋ฐ์.
vue create my-project
์ด๋ ๊ฒ ์์ฑ๋ ๋ทฐ ํ๋ก์ ํธ๋ ์นํฉ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค.
npm run serve
: ๋ก์ปฌ ์๋ฒ๋ฅผ ์นํฉ ๋ฐ๋ธ ์๋ฒ๋ก ์คํnpm run build
: ์นํฉ์ผ๋ก ์ต์ข ๊ฒฐ๊ณผ๋ฌผ ๋ณํ(๋น๋)
TIP
์นํฉ์ ์ต์ ํ๋ฐํธ์๋ ๋น๋ ์์คํ ์ ํต์ฌ์ด ๋๋ ๋น๋ ๋๊ตฌ์ ๋๋ค. ์นํฉ์ ์ ๋ชจ๋ฅด์๋ ๋ถ๋ค์ ์นํฉ ๊ฐ์ (opens new window)๋ ์นํฉ ํธ๋๋ถ (opens new window)์ ์ฐธ๊ณ ํด์ ํ์ตํด ๋ณด์ธ์ ๐
# ์์ฑ๋ ๋ทฐ ํ๋ก์ ํธ์ ์นํฉ ์ค์ ํ์ผ์ด ์๋ณด์ด๋๋ฐ์?
๋ทฐ CLI ๋ฒ์ 2 ์ดํ์์๋ ์นํฉ ์ค์ ํ์ผ(webpack.config.js)์ด ํ๋ก์ ํธ ๋ฃจํธ ๋ ๋ฒจ์ ๋
ธ์ถ๋์ด ์์์ต๋๋ค. ์ด๋ฐ ๋ถ๋ถ์ด ์นํฉ์ ์ต์ํ์ง ์์ ์ฌ์ฉ์๋ค์๊ฒ๋ ๋ถ๋ด์ด ๋์๋๋ฐ์. ๊ทธ๋์ ๋ทฐ CLI ๋ฒ์ 3 ์ด์๋ถํฐ๋ ์นํฉ ์ค์ ํ์ผ์ ์๋์ ๊ฐ์ด vue-cli-service
๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฐ์ถ์ด ๋์์ต๋๋ค.
์ ํด๋ ์์น๋ ์๋์ ๊ฐ์ต๋๋ค.
src
node_modules
@vue
cli-service
...
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฌ์ฉ์๋ค์๊ฒ๋ ์๋ฒ ์์ ๋ช ๋ น์ด์ ๋น๋ ๋ช ๋ น์ด๋ง ์๋ ค์ฃผ๋ฉด ์นํฉ์ ๋ชฐ๋ผ๋ ๋๊ฒ๋ ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ ํด๋์ ๊ฒ์ ๋๋ค.
// package.json
{
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build"
}
}
# ๊ทธ๋ผ ํ๋ก์ ํธ์ ์ค์ ๋์ด ์๋ ์นํฉ ์ต์ ์์ฑ์ ์ด๋ป๊ฒ ๋ณผ ์ ์๋์?
๋ง์ฝ ์นํฉ ์ค์ ํ์ผ webpack.config.js
๊ฐ ํ๋ก์ ํธ ๋ฃจํธ ๋ ๋ฒจ๋ก ๋์ ์๋ค๋ฉด ๋ฐ๋ก ๋ณด๋ฉด ๋๊ฒ ์ง๋ง vue-cli-service
๋ด๋ถ์ ์ฌ๋ฌ ํ์ผ๋ค๋ก ๋๋์ด์ ธ ์์ด ํ๋์ ํ์
ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด ๋ ํ๋ก์ ํธ์ ์ค์ ๋ ์นํฉ ์ต์
๋ค์ ๋ณด๊ณ ์ถ๋ค๋ฉด ์๋ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํฉ๋๋ค.
vue inspect > options.js
์ ๋ช
๋ น์ด๋ฅผ ์น๋ฉด ํ๋ก์ ํธ ๋ด๋ถ์ ์ผ๋ก ์ค์ ๋ ์นํฉ์ ์ต์
๋ค์ options.js
ํ์ผ์ ๋ด์์ค๋๋ค. ์ด์ options.js
ํ์ผ์ ์ด์ด๋ณด๋ฉด ์๋ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค.
# ํ๋ก์ ํธ์ ์นํฉ ์ค์ ์ ์์ ํ๊ณ ์ถ๋ค๋ฉด?
ํ๋ก์ ํธ์ ์ค์ ๋์ด ์๋ ์นํฉ์ ์ต์
๋ค์ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด vue.config.js
ํ์ผ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
// vue.config.js
module.exports = {
outputDir: 'my-dist',
}
์ outputDir
์์ฑ์ ์นํฉ ์ค์ ํ์ผ์ output.path (opens new window)์ ๋์ผํ ์ต์
์
๋๋ค. ์ด๋ ๊ฒ ๋ทฐ CLI์ ๊ณต์ ๊ฐ์ด๋์ ์๋ด๋ ๋ด์ฉ (opens new window)์ ๋ฐ๋ผ ์นํฉ ์ค์ ์ ๋ณ๊ฒฝํด ์ฃผ์
์ผ ์ต์ข
๋น๋์์ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝํ ๊ฐ์ด ํจ๊ป ์ ์ฉ๋ฉ๋๋ค.
์ด์ธ์๋ ์๋์ ๊ฐ์ ์ต์ ๋ค์ ์ด์ฉํ์ฌ ์นํฉ ์ค์ ์ ์ถ๊ฐ ๋๋ ์ฒด์ด๋์ ํ ์ ์์ต๋๋ค.
// vue.config.js
module.exports = {
// ์ต์
์ถ๊ฐ
configureWebpack: {
plugins: [
new MyAwesomeWebpackPlugin()
]
},
// ์ต์
์ฒด์ด๋
configureWebpack: config => {
if (process.env.NODE_ENV === 'production') {
// mutate config for production...
} else {
// mutate for development...
}
}
}
์ต์ ์ถ๊ฐ์ ์ฒด์ด๋ ๋ฐฉ๋ฒ์ ์ ํํ ๊ฐ์ด๋ (opens new window)๋ CLI ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์ ๐
โ CLI v3.x Rules ESLint & Prettier โ