forked from ExtensionEngine/tailor
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpoi.config.js
More file actions
115 lines (104 loc) · 2.87 KB
/
Copy pathpoi.config.js
File metadata and controls
115 lines (104 loc) · 2.87 KB
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
'use strict';
const path = require('path');
const serverPort = require('./config/server').port;
const { NODE_ENV, STORAGE_PATH } = process.env;
const imagesPath = 'assets/img';
const isProduction = NODE_ENV === 'production';
const serverUrl = `http://127.0.0.1:${serverPort}`;
const aliases = {
'@': path.resolve(__dirname, './client'),
client: '@',
assets: '@/assets',
components: '@/components',
'tce-core': '@/components/common/tce-core',
EventBus: '@/EventBus',
utils: '@/utils',
shared: path.join(__dirname, 'config/shared'),
tce: path.join(__dirname, 'content-elements')
};
const copy = [{ from: 'client/assets/img', to: imagesPath }];
/** @type {import('poi').Config.DevServer} */
const devServer = {
headers: {
'X-Powered-By': 'Webpack DevSever'
},
proxy: {
'/api': { target: serverUrl },
...(STORAGE_PATH ? { '/repository': serverUrl } : {})
},
// Override using: `npm run dev:server -- --port <number>`
port: 8080,
hotEntries: ['app']
};
const extensions = ['.vue'];
/** @type {import('poi').Config} */
module.exports = {
plugins: [
'@poi/eslint',
'@poi/bundle-report',
require.resolve('./build/plugins/stats'),
{
resolve: require.resolve('./build/plugins/output-filenames'),
options: {
vendor: {
font: 'assets/fonts/[name].[ext]',
image: 'assets/images/[name].[ext]'
}
}
}, {
resolve: require.resolve('./build/plugins/copy'),
options: { patterns: copy }
}, {
resolve: require.resolve('./build/plugins/clean-out-dir'),
options: {
cleanOnceBeforeBuildPatterns: ['**/*', '!.gitkeep']
}
},
require.resolve('./build/plugins/html-version-spec'),
{
resolve: require.resolve('./build/plugins/brand'),
options: {
files: ['.brandrc', '.brandrc.js'],
imagesPath
}
}, {
resolve: 'poi-preset-sass-resources',
options: {
resources: './client/assets/stylesheets/common/_variables.scss'
}
}
],
entry: {
app: 'client/main.js'
},
output: {
dir: 'dist',
sourceMap: !isProduction
},
chainWebpack(config, { mode }) {
config.resolve.alias.merge(aliases);
config.resolve.extensions.merge(extensions);
config.module.rule('bootstrap')
.test(/bootstrap-sass[/\\]assets[/\\]javascripts[/\\]/)
.post()
.use('imports-loader')
.loader(require.resolve('imports-loader'))
.options({ jQuery: 'jquery' });
config.module.rule('val')
.test(/\.load\.js$/)
.post()
.use('val-loader')
.loader(require.resolve('val-loader'));
config
.plugin('dotenv')
.use(require.resolve('dotenv-webpack'));
if (mode !== 'production') return;
config
.plugin('minimize')
.tap(([options]) => {
options.terserOptions.keep_fnames = true;
return [options];
});
},
devServer
};