-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.mix.js
123 lines (110 loc) · 3.57 KB
/
webpack.mix.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
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
116
117
118
119
120
121
122
123
const mix = require("laravel-mix");
const path = require('path')
if(process.env.MIX_PUBLIC_PATH !== null && process.env.MIX_PUBLIC_PATH !== undefined && process.env.MIX_PUBLIC_PATH !== '') {
mix.setPublicPath('public')
.webpackConfig({
output: {publicPath: process.env.MIX_PUBLIC_PATH}
});
}
/**
*
* !Copy Assets
*
* -----------------------------------------------------------------------------
*/
// icon fonts
mix.copy(
"node_modules/@fortawesome/fontawesome-free/webfonts/*",
"public/webfonts"
);
/**
*
* !Backend/Dashboard
*
* -----------------------------------------------------------------------------
*/
// Build Backend/Dashboard SASS
mix.sass("resources/sass/libs.scss", "public/css/libs.min.css")
.sass("public/scss/hope-ui.scss", "public/css")
.sass("public/scss/custom.scss", "public/css")
.sass("public/scss/dark.scss", "public/css")
.sass("public/scss/rtl.scss", "public/css")
.sass("public/scss/customizer.scss", "public/css")
.sass("public/scss/pro.scss", "public/css");
// Backend/Dashboard Styles
mix.styles(
[
"public/css/hope-ui.css",
"public/css/pro.css",
],
"public/css/backend.css"
);
mix.styles([
"node_modules/@fortawesome/fontawesome-free/css/all.min.css"
], 'public/css/icon.min.css')
// Backend/Dashboard Scripts
mix.js("resources/js/libs.js", "public/js/core/libs.min.js")
.js("resources/js/backend-custom.js", "public/js/backend-custom.js");
mix.scripts(
[
"public/js/core/libs.min.js",
"public/js/backend-custom.js",
],
"public/js/backend.js"
);
mix.alias({
'@': path.join(__dirname, 'resources/js')
});
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css');
mix.js("resources/js/setting-vue.js", "public/js/setting-vue.min.js")
mix.js("resources/js/profile-vue.js", "public/js/profile-vue.min.js")
mix.js("resources/js/import-export.js", "public/js/import-export.min.js")
// Global Vue Script
mix.js('resources/js/vue/app.js', 'public/js/vue.min.js').vue();
mix.js('resources/js/vue/booking-form.js', 'public/js/booking-form.min.js').vue();
/**
* !Module Based Script & Style Bundel
* @path Modules/{module_name}/app.js (This Could be vue, react, vanila javascript)
* @path Module/{module_name}/app.scss (There is all module css)
*
* !Final Build Path Should Be
* @path public/modules/{module_name}/script.js
* @path public/modules/{module_name}/style.js
*
* *USAGE IN BLADE FILE*
* ? <link rel="stylesheet" href="{{ mix('modules/{module_name}/style.css') }}">
* ? <script src="{{ mix('modules/{module_name}/script.js') }}"></script>
*/
const Modules = require("./modules_statuses.json");
const Fs = require("fs");
for (const key in Modules) {
if (Object.hasOwnProperty.call(Modules, key)) {
if (
Fs.existsSync(
`${__dirname}/Modules/${key}/Resources/assets/js/app.js`
)
) {
mix.js(
`${__dirname}/Modules/${key}/Resources/assets/js/app.js`,
`modules/${key.toLocaleLowerCase()}/script.js`
)
.vue()
.sourceMaps();
}
if (
Fs.existsSync(
`${__dirname}/Modules/${key}//Resources/assets/sass/app.scss`
)
) {
mix.sass(
`${__dirname}/Modules/${key}//Resources/assets/sass/app.scss`,
`modules/${key.toLocaleLowerCase()}/style.css`
).sourceMaps();
}
}
}
// !For Production Build Added To Version on File for cache
if (mix.inProduction()) {
mix.version();
}