| Server IP : 103.175.220.74 / Your IP : 216.73.216.151 Web Server : nginx/1.18.0 System : Linux p-floo-wj1-db 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : deploy ( 1003) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/app/onega.id/erp/demo/ |
Upload File : |
const mix = require("laravel-mix");
const glob = require("glob");
const path = require("path");
const ReplaceInFileWebpackPlugin = require("replace-in-file-webpack-plugin");
const rimraf = require("rimraf");
require("laravel-mix-merge-manifest");
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel application. By default, we are compiling the Sass
| file for the application as well as bundling up all the JS files.
|
*/
// Compilation options
// base|metronic|core-third-party|custom
let compilationOptions = process.env.MIX_ASSET_BUILD_OPTIONS.split("|");
if (compilationOptions.includes("base")) {
// Base
// Including: vue, lodash, axios
mix.js("resources/js/app.js", "public/base/js")
.js("resources/js/config.js", "public/base/js")
.sass("resources/sass/app.scss", "public/base/css")
.mergeManifest();
}
if (compilationOptions.includes("metronic")) {
// Metronic css/js
mix.sass(
"resources/metronic/sass/style.scss",
"public/metronic/css/style.bundle.css",
{
sassOptions: {
includePaths: ["node_modules"]
}
}
)
// .options({processCssUrls: false})
.js("resources/js/scripts.js", "public/metronic/js/scripts.bundle.js")
.mergeManifest();
// Metronic css pages (single page use)
(glob.sync("resources/metronic/sass/pages/**/!(_)*.scss") || []).forEach(
file => {
file = file.replace(/[\\\/]+/g, "/");
mix.sass(
file,
file
.replace("resources/metronic/sass", "public/metronic/css")
.replace(/\.scss$/, ".css")
).mergeManifest();
}
);
// Metronic js pages (single page use)
(glob.sync("resources/metronic/js/pages/**/*.js") || []).forEach(file => {
mix.js(
file,
`public/${file.replace("resources/metronic/", "metronic")}`
).mergeManifest();
});
// Metronic media
mix.copyDirectory(
"resources/metronic/media",
"public/metronic/media"
).mergeManifest();
// Metronic theme
(glob.sync("resources/metronic/sass/themes/**/!(_)*.scss") || []).forEach(
file => {
file = file.replace(/[\\\/]+/g, "/");
mix.sass(
file,
file
.replace("resources/metronic/sass", "public/metronic/css")
.replace(/\.scss$/, ".css")
).mergeManifest();
}
);
// Webpack.mix does not copy fonts, manually copy
(
glob.sync("resources/metronic/plugins/**/*.+(woff|woff2|eot|ttf)") || []
).forEach(file => {
var folder = file.match(/resources\/metronic\/plugins\/(.*?)\//)[1];
mix.copy(
file,
`public/plugins/global/fonts/${folder}/${path.basename(file)}`
);
});
(
glob.sync(
"node_modules/+(@fortawesome|socicon|line-awesome)/**/*.+(woff|woff2|eot|ttf)"
) || []
).forEach(file => {
var folder = file.match(/node_modules\/(.*?)\//)[1];
mix.copy(
file,
`public/plugins/global/fonts/${folder}/${path.basename(file)}`
);
});
mix.sass(
"resources/plugins/plugins.scss",
"public/plugins/global/plugins.bundle.css"
)
.then(() => {
// remove unused preprocessed fonts folder
rimraf(path.resolve("public/fonts"), () => { });
rimraf(path.resolve("public/images"), () => { });
})
.sourceMaps(!mix.inProduction())
// .setResourceRoot('./')
.options({
processCssUrls: false
})
.js(
["resources/plugins/plugins.js"],
"public/plugins/global/plugins.bundle.js"
)
.mergeManifest();
mix.webpackConfig({
plugins: [
new ReplaceInFileWebpackPlugin([
{
// rewrite font paths
dir: path.resolve("public/plugins/global"),
test: /\.css$/,
rules: [
{
// fontawesome
search: /url\((\.\.\/)?webfonts\/(fa-.*?)"?\)/g,
replace: "url(./fonts/@fortawesome/$2)"
},
{
// flaticon
search: /url\(("?\.\/)?font\/(Flaticon\..*?)"?\)/g,
replace: "url(./fonts/flaticon/$2)"
},
{
// flaticon2
search: /url\(("?\.\/)?font\/(Flaticon2\..*?)"?\)/g,
replace: "url(./fonts/flaticon2/$2)"
},
{
// keenthemes fonts
search: /url\(("?\.\/)?font\/(Ki\..*?)"?\)/g,
replace: "url(./fonts/keenthemes-icons/$2)"
},
{
// lineawesome fonts
search: /url\(("?\.\.\/)?fonts\/(la-.*?)"?\)/g,
replace: "url(./fonts/line-awesome/$2)"
},
{
// socicons
search: /url\(("?\.\.\/)?font\/(socicon\..*?)"?\)/g,
replace: "url(./fonts/socicon/$2)"
}
]
}
])
]
});
}
if (compilationOptions.includes("base-third-party")) {
// 3rd party plugins css/js
// Including: element-ui, devextreme-datagrid
mix.copy(
"node_modules/devextreme/dist/css/icons/dxicons.woff2",
"public/plugins/devextreme/datagrid/icons/dxicons.woff2"
);
mix.copy(
"node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf",
"public/plugins/onega-ui/fonts/element-icons.ttf"
);
mix.copy(
"node_modules/element-ui/lib/theme-chalk/fonts/element-icons.woff",
"public/plugins/onega-ui/fonts/element-icons.woff"
);
// Custom 3rd party plugins
(glob.sync("resources/plugins/custom/**/*.js") || []).forEach(file => {
mix.js(
file,
`public/${file
.replace("resources/plugins/custom", "plugins")
.replace(".js", ".bundle.js")}`
);
});
(glob.sync("resources/plugins/custom/**/*.scss") || []).forEach(file => {
mix.sass(
file,
`public/${file
.replace("resources/plugins/custom", "plugins")
.replace(".scss", ".bundle.css")}`
).mergeManifest();
});
}
// ONEGA UI Only
if (compilationOptions.includes("onega-ui")) {
mix.copy(
"node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf",
"public/plugins/onega-ui/fonts/element-icons.ttf"
);
mix.copy(
"node_modules/element-ui/lib/theme-chalk/fonts/element-icons.woff",
"public/plugins/onega-ui/fonts/element-icons.woff"
);
(glob.sync("resources/plugins/custom/devextreme/{datagrid,scheduler}/*.js") || []).forEach(
file => {
mix.js(
file,
`public/${file
.replace("resources/plugins/custom", "plugins")
.replace(".js", ".bundle.js")}`
);
}
);
(glob.sync("resources/plugins/custom/onega-ui/*.js") || []).forEach(
file => {
mix.js(
file,
`public/${file
.replace("resources/plugins/custom", "plugins")
.replace(".js", ".bundle.js")}`
);
}
);
(glob.sync("resources/plugins/custom/onega-ui/*.scss") || []).forEach(
file => {
mix.sass(
file,
`public/${file
.replace("resources/plugins/custom", "plugins")
.replace(".scss", ".bundle.css")}`
).mergeManifest();
}
);
}