-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathwebpack.config.js
85 lines (78 loc) ยท 2.09 KB
/
webpack.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// ํ์ฌ ํ๋ก์ ํธ์์ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์๋๋ก ์ง์ .
// ํนํ Windows์์ ๋ฐ์ํ๋ ์ค๋ฅ ํด๊ฒฐ์ ์ํ ์ฝ๋.
// ์ด ์ฝ๋๊ฐ ์์ด๋ ์ ๋์ํ๋ ๊ฒฝ์ฐ ํ์์น ์์.
const _require = id => require(require.resolve(id, { paths: [require.main.path] }))
// path: NodeJS์์ ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก ์์
์ ์ํ ์ ์ญ ๋ชจ๋
const path = _require('path')
const HtmlPlugin = _require('html-webpack-plugin')
const CopyPlugin = _require('copy-webpack-plugin')
const { VueLoaderPlugin } = _require('vue-loader')
module.exports = {
resolve: {
// ๊ฒฝ๋ก์์ ํ์ฅ์ ์๋ต ์ค์
extensions: ['.js', '.vue'],
// ๊ฒฝ๋ก ๋ณ์นญ ์ค์
alias: {
'~': path.resolve(__dirname, 'src'),
// 'assets': path.resolve(__dirname, 'src/assets')
}
},
// ํ์ผ์ ์ฝ์ด๋ค์ด๊ธฐ ์์ํ๋ ์ง์
์ ์ค์
entry: './src/main.js',
// ๊ฒฐ๊ณผ๋ฌผ(๋ฒ๋ค)์ ๋ฐํํ๋ ์ค์
output: {
// ์ฃผ์์ ๊ธฐ๋ณธ๊ฐ!, `__dirname`์ ํ์ฌ ํ์ผ์ ์์น๋ฅผ ์๋ ค์ฃผ๋ NodeJS ์ ์ญ ๋ณ์
// path: path.resolve(__dirname, 'dist'),
// filename: 'main.js',
clean: true
},
// ๋ชจ๋ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ค์
module: {
rules: [
{
test: /\.vue$/,
use: 'vue-loader'
},
{
test: /\.s?css$/,
use: [
// ์์ ์ค์!
'vue-style-loader',
'style-loader',
'css-loader',
'postcss-loader',
'sass-loader'
]
},
{
test: /\.js$/,
exclude: /node_modules/, // ์ ์ธํ ๊ฒฝ๋ก
use: [
'babel-loader'
]
},
{
test: /\.(png|jpe?g|gif|webp)$/,
use: 'file-loader'
}
]
},
// ๋ฒ๋ค๋ง ํ ๊ฒฐ๊ณผ๋ฌผ์ ์ฒ๋ฆฌ ๋ฐฉ์ ๋ฑ ๋ค์ํ ํ๋ฌ๊ทธ์ธ๋ค์ ์ค์
plugins: [
new HtmlPlugin({
template: './index.html'
}),
new CopyPlugin({
patterns: [
{ from: 'static' }
]
}),
new VueLoaderPlugin()
],
// ๊ฐ๋ฐ ์๋ฒ ์ต์
devServer: {
host: 'localhost',
port: 8080,
hot: true
}
}