Merge pull request #5714 from devansh-webkul/unkown-message

Video Upload Fixed #5709
This commit is contained in:
Devansh 2022-01-31 14:29:48 +05:30 committed by GitHub
commit fd3639135c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 167 additions and 145 deletions

View File

@ -73,10 +73,10 @@ class ProductForm extends FormRequest
$this->rules = array_merge($product->getTypeInstance()->getTypeValidationRules(), [
'sku' => ['required', 'unique:products,sku,' . $this->id, new Slug],
'url_key' => ['required', new ProductCategoryUniqueSlug('product_flat', $this->id)],
'images.*' => 'nullable|mimes:bmp,jpeg,jpg,png,webp',
'videos.*' => "nullable|mimes:mov,mp4|max:$maxVideoFileSize",
'special_price_from' => 'nullable|date',
'special_price_to' => 'nullable|date|after_or_equal:special_price_from',
'images.*' => ['nullable', 'mimes:bmp,jpeg,jpg,png,webp'],
'videos.*' => ['nullable', 'mimetypes:application/octet-stream,video/mp4,video/webm,video/quicktime', 'max:' . $maxVideoFileSize],
'special_price_from' => ['nullable', 'date'],
'special_price_to' => ['nullable', 'date', 'after_or_equal:special_price_from'],
'special_price' => ['nullable', new Decimal, 'lt:price'],
]);
@ -110,7 +110,7 @@ class ProductForm extends FormRequest
$column = ProductAttributeValue::$attributeTypeFields[$attribute->type];
if (! $this->productAttributeValueRepository->isValueUnique($this->id, $attribute->id, $column, request($attribute->code))) {
$fail('The :attribute has already been taken.');
$fail(__('admin::app.response.already-taken', ['name' => ':attribute']));
}
});
}
@ -129,7 +129,19 @@ class ProductForm extends FormRequest
public function messages()
{
return [
'variants.*.sku.unique' => 'The sku has already been taken.',
'variants.*.sku.unique' => __('admin::app.response.already-taken', ['name' => ':attribute']),
];
}
/**
* Attributes.
*
* @return array
*/
public function attributes()
{
return [
'variants.*.sku' => 'sku',
];
}
}

View File

@ -1,37 +1,32 @@
@inject ('wishListHelper', 'Webkul\Customer\Helpers\Wishlist')
<?php
@php
$images = productimage()->getGalleryImages($product);
$videos = productvideo()->getVideos($product);
$images = array_merge($images, $videos);
?>
@endphp
{!! view_render_event('bagisto.shop.products.view.gallery.before', ['product' => $product]) !!}
<div class="product-image-group">
<div class="cp-spinner cp-round" id="loader">
</div>
<div class="cp-spinner cp-round" id="loader"></div>
<product-gallery></product-gallery>
@include ('shop::products.view.product-add')
</div>
{!! view_render_event('bagisto.shop.products.view.gallery.after', ['product' => $product]) !!}
@push('scripts')
<script type="text/x-template" id="product-gallery-template">
<div>
<ul class="thumb-list">
<li class="gallery-control top" @click="moveThumbs('top')" v-if="(thumbs.length > 4) && this.is_move.up">
<span class="overlay"></span>
<i class="icon arrow-up-white-icon"></i>
</li>
@ -46,14 +41,16 @@
<li class="gallery-control bottom" @click="moveThumbs('bottom')" v-if="(thumbs.length > 4) && this.is_move.down">
<span class="overlay"></span>
<i class="icon arrow-down-white-icon"></i>
</li>
</ul>
<div class="product-hero-image" id="product-hero-image">
<video :key="currentVideoUrl" v-if="currentType == 'video'" width="100%" height="100%" controls>
<video :key="currentVideoUrl" v-if="currentType == 'video'" width="100%" height="420" controls>
<source :src="currentVideoUrl" :data-image="currentOriginalImageUrl" type="video/mp4">
{{ __('admin::app.catalog.products.not-support-video') }}
{{ __('admin::app.catalog.products.not-support-video') }}
</video>
<img v-else :src="currentLargeImageUrl" id="pro-img" :data-image="currentOriginalImageUrl" alt=""/>
@ -80,7 +77,6 @@
@endif
@endauth
</div>
</div>
</script>
@ -119,16 +115,16 @@
watch: {
'images': function(newVal, oldVal) {
this.changeImage(this.images[0])
this.changeImage(this.images[0]);
this.prepareThumbs()
this.prepareThumbs();
}
},
created: function() {
this.changeImage(this.images[0])
this.changeImage(this.images[0]);
this.prepareThumbs()
this.prepareThumbs();
},
methods: {
@ -196,7 +192,6 @@
},
}
});
</script>
<script>
@ -206,7 +201,6 @@
}
@if (auth()->guard('customer')->user())
let wishlist = "{{ $wishListHelper->getWishlistProduct($product) ? 'true' : 'false' }}";
$(document).mousemove(function(event) {
@ -226,9 +220,7 @@
$(".zoomWindow").removeClass("zoom-image-direction");
}
});
@endif
})
});
</script>
@endpush

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(()=>{"use strict";var e,r,t,o={},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var t=n[e]={id:e,exports:{}};return o[e].call(t.exports,t,t.exports,i),t.exports}i.m=o,e=[],i.O=(r,t,o,n)=>{if(!t){var f=1/0;for(c=0;c<e.length;c++){for(var[t,o,n]=e[c],l=!0,u=0;u<t.length;u++)(!1&n||f>=n)&&Object.keys(i.O).every((e=>i.O[e](t[u])))?t.splice(u--,1):(l=!1,n<f&&(f=n));if(l){e.splice(c--,1);var a=o();void 0!==a&&(r=a)}}return r}n=n||0;for(var c=e.length;c>0&&e[c-1][2]>n;c--)e[c]=e[c-1];e[c]=[t,o,n]},i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var n=Object.create(null);i.r(n);var f={};r=r||[null,t({}),t([]),t(t)];for(var l=2&o&&e;"object"==typeof l&&!~r.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach((r=>f[r]=()=>e[r]));return f.default=()=>e,i.d(n,f),n},i.d=(e,r)=>{for(var t in r)i.o(r,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},i.e=()=>Promise.resolve(),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={929:0,166:0,362:0};i.O.j=r=>0===e[r];var r=(r,t)=>{var o,n,[f,l,u]=t,a=0;if(f.some((r=>0!==e[r]))){for(o in l)i.o(l,o)&&(i.m[o]=l[o]);if(u)var c=u(i)}for(r&&r(t);a<f.length;a++)n=f[a],i.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return i.O(c)},t=self.webpackChunk=self.webpackChunk||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
(()=>{"use strict";var e,r,t,o,n={},i={};function a(e){var r=i[e];if(void 0!==r)return r.exports;var t=i[e]={id:e,exports:{}};return n[e].call(t.exports,t,t.exports,a),t.exports}a.m=n,e=[],a.O=(r,t,o,n)=>{if(!t){var i=1/0;for(f=0;f<e.length;f++){for(var[t,o,n]=e[f],l=!0,u=0;u<t.length;u++)(!1&n||i>=n)&&Object.keys(a.O).every((e=>a.O[e](t[u])))?t.splice(u--,1):(l=!1,n<i&&(i=n));if(l){e.splice(f--,1);var s=o();void 0!==s&&(r=s)}}return r}n=n||0;for(var f=e.length;f>0&&e[f-1][2]>n;f--)e[f]=e[f-1];e[f]=[t,o,n]},a.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return a.d(r,{a:r}),r},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var n=Object.create(null);a.r(n);var i={};r=r||[null,t({}),t([]),t(t)];for(var l=2&o&&e;"object"==typeof l&&!~r.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach((r=>i[r]=()=>e[r]));return i.default=()=>e,a.d(n,i),n},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>"js/components.js",a.miniCssF=e=>({166:"css/velocity",362:"css/velocity-admin"}[e]+".css"),a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o={},a.l=(e,r,t,n)=>{if(o[e])o[e].push(r);else{var i,l;if(void 0!==t)for(var u=document.getElementsByTagName("script"),s=0;s<u.length;s++){var f=u[s];if(f.getAttribute("src")==e){i=f;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.src=e),o[e]=[r];var c=(r,t)=>{i.onerror=i.onload=null,clearTimeout(d);var n=o[e];if(delete o[e],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(t))),r)return r(t)},d=setTimeout(c.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=c.bind(null,i.onerror),i.onload=c.bind(null,i.onload),l&&document.head.appendChild(i)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.p="/",(()=>{var e={929:0,166:0,362:0};a.f.j=(r,t)=>{var o=a.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else if(/^(166|362|929)$/.test(r))e[r]=0;else{var n=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=n);var i=a.p+a.u(r),l=new Error;a.l(i,(t=>{if(a.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var n=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+r+" failed.\n("+n+": "+i+")",l.name="ChunkLoadError",l.type=n,l.request=i,o[1](l)}}),"chunk-"+r,r)}},a.O.j=r=>0===e[r];var r=(r,t)=>{var o,n,[i,l,u]=t,s=0;if(i.some((r=>0!==e[r]))){for(o in l)a.o(l,o)&&(a.m[o]=l[o]);if(u)var f=u(a)}for(r&&r(t);s<i.length;s++)n=i[s],a.o(e,n)&&e[n]&&e[n][0](),e[i[s]]=0;return a.O(f)},t=self.webpackChunk=self.webpackChunk||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();

View File

@ -1 +1 @@
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[847],{4047:(e,t,n)=>{var o=n(538),i=n(9669),a=n.n(i);function c(){return document.querySelector('meta[name="base-url"]').content}function r(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i|/mobi/i.test(navigator.userAgent)}function s(e,t){var n=document.createElement("script");n.setAttribute("src",e),document.body.appendChild(n),n.addEventListener("load",t,!1)}function d(e){return e.replace(/\/$/,"")}o.default.prototype.$http=a(),window.Vue=o.default,window.eventBus=new o.default,window.axios=a(),window.jQuery=window.$=n(9755),window.BootstrapSass=n(3002),window.lazySize=n(7090),window.getBaseUrl=c,window.isMobile=r,window.loadDynamicScript=s,window.showAlert=function(e,t,n){if(e&&""!==n){var o=Math.floor(1e3*Math.random()),i='<div class="alert '.concat(e,' alert-dismissible" id="').concat(o,'">\n <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>\n <strong>').concat(t?t+"!":""," </strong> ").concat(n,".\n </div>");$("#alert-container").append(i).ready((function(){window.setTimeout((function(){$("#alert-container #".concat(o)).remove()}),5e3)}))}},$((function(){var e=c(),t="themes/velocity/assets/js/velocity.js";r()&&d(e)===d(window.location.href)?document.addEventListener("touchstart",(function n(){var o=this;window.scrollTo(0,0),document.body.style.overflow="hidden",s("".concat(e,"/").concat(t),(function(){window.scrollTo(0,0),document.body.style.overflow="",o.removeEventListener("touchstart",n)}))}),!1):s("".concat(e,"/").concat(t),(function(){}))}))},2892:()=>{},1142:()=>{}},e=>{var t=t=>e(e.s=t);e.O(0,[339,166,362],(()=>(t(4047),t(2892),t(1142))));e.O()}]);
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[847],{4047:(e,t,n)=>{var o=n(538),i=n(9669),a=n.n(i);function r(){return document.querySelector('meta[name="base-url"]').content}function c(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i|/mobi/i.test(navigator.userAgent)}function s(e,t){var n=document.createElement("script");n.setAttribute("src",e),document.body.appendChild(n),n.addEventListener("load",t,!1)}function d(e){return e.replace(/\/$/,"")}o.default.prototype.$http=a(),window.Vue=o.default,window.eventBus=new o.default,window.axios=a(),window.jQuery=window.$=n(9755),window.BootstrapSass=n(3002),window.lazySize=n(7090),window.getBaseUrl=r,window.isMobile=c,window.loadDynamicScript=s,window.showAlert=function(e,t,n){if(e&&""!==n){var o=Math.floor(1e3*Math.random()),i='<div class="alert '.concat(e,' alert-dismissible" id="').concat(o,'">\n <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>\n <strong>').concat(t?t+"!":""," </strong> ").concat(n,".\n </div>");$("#alert-container").append(i).ready((function(){window.setTimeout((function(){$("#alert-container #".concat(o)).remove()}),5e3)}))}},$((function(){var e=r(),t="themes/velocity/assets/js/velocity.js";c()&&d(e)===d(window.location.href)?document.addEventListener("touchstart",(function n(){var o=this;window.scrollTo(0,0),document.body.style.overflow="hidden",s("".concat(e,"/").concat(t),(function(){window.scrollTo(0,0),document.body.style.overflow="",o.removeEventListener("touchstart",n)}))}),!1):s("".concat(e,"/").concat(t),(function(){}))}))}},e=>{e.O(0,[339],(()=>{return t=4047,e(e.s=t);var t}));e.O()}]);

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,11 @@
{
"/js/velocity-core.js": "/js/velocity-core.js?id=03a0210d750dd5a7a25a",
"/js/velocity.js": "/js/velocity.js?id=6f3038cbf7349644c857",
"/js/manifest.js": "/js/manifest.js?id=49cba5d7f2bde965afa8",
"/js/components.js": "/js/components.js?id=8f1ecae83b7eb193e1c5",
"/css/velocity.css": "/css/velocity.css?id=dd5a8199e031ae58e1ec",
"/css/velocity-admin.css": "/css/velocity-admin.css?id=da7de48a51829d6c06dd",
"/js/jquery-ez-plus.js": "/js/jquery-ez-plus.js?id=ba3c7cada62de152fd8f",
"/js/velocity-core.js": "/js/velocity-core.js?id=8010dfb021a49555afa7",
"/js/velocity.js": "/js/velocity.js?id=ac05caeb5e4b0566a4ab",
"/js/manifest.js": "/js/manifest.js?id=f801c7b774900481b564",
"/js/components.js": "/js/components.js?id=d16d70d3905f32644901",
"/css/velocity.css": "/css/velocity.css?id=075770f6dc71cf821f6c",
"/css/velocity-admin.css": "/css/velocity-admin.css?id=f492100e7b8496e7b32d",
"/images/Camera.svg": "/images/Camera.svg?id=b2fd2f9e17e1ccee96e2",
"/images/Icon-Calendar.svg": "/images/Icon-Calendar.svg?id=870d0f733a5837742276",
"/images/Icon-Crossed.svg": "/images/Icon-Crossed.svg?id=c72c3c1ef790bd4fd993",

View File

@ -2,85 +2,88 @@
<div class="outer-assets-container">
<div class="video-container" v-if="currentType == 'video'">
<video :key="activeImageVideoURL" width="100%" controls>
<source :src="activeImageVideoURL" type="video/mp4">
<source :src="activeImageVideoURL" type="video/mp4" />
</video>
</div>
<div class="image-container" v-else>
<div class="magnifier">
<img :src="activeImageVideoURL" :data-zoom-image="activeImageVideoURL"
:class="[!isMobile() ? 'main-product-image' : 'vc-small-product-image']">
<img
:src="activeImageVideoURL"
:data-zoom-image="activeImageVideoURL"
:class="[
! isMobile()
? 'main-product-image'
: 'vc-small-product-image',
]"
/>
</div>
</div>
</div>
</template>
<style lang="scss">
.outer-assets-container {
height: 420px;
.outer-assets-container {
height: 420px;
.image-container {
.magnifier {
> img {
max-width: 100%;
max-height: 420px;
}
}
}
@media only screen and (max-width: 992px) {
.image-container {
margin: 0 auto;
.magnifier {
> img {
width: 100%;
max-height: 300px;
}
}
}
}
.video-container {
top: 50%;
position: relative;
min-height: 420px;
max-height: 420px;
video {
transform: translateY(-50%);
.image-container {
.magnifier {
> img {
max-width: 100%;
max-height: 420px;
}
}
}
@media only screen and (max-width: 992px) {
.outer-assets-container {
height: 300px;
.image-container {
margin: 0 auto;
.magnifier {
> img {
width: 100%;
max-height: 300px;
}
}
}
}
.video-container {
position: relative;
min-height: 420px;
max-height: 420px;
video {
max-height: 420px;
}
}
}
</style>
<script type="text/javascript">
export default {
props: ['src', 'type'],
export default {
props: ['src', 'type'],
data: function () {
return {
activeImage: null,
activeImageVideoURL: this.src,
currentType: this.type,
}
},
data: function () {
return {
activeImage: null,
activeImageVideoURL: this.src,
currentType: this.type,
};
},
mounted: function () {
/* binding should be with class as ezplus is having bug of creating multiple containers */
this.activeImage = $('.main-product-image');
this.activeImage.attr('src', this.activeImageVideoURL);
this.activeImage.data('zoom-image', this.activeImageVideoURL);
mounted: function () {
/* binding should be with class as ezplus is having bug of creating multiple containers */
this.activeImage = $('.main-product-image');
this.activeImage.attr('src', this.activeImageVideoURL);
this.activeImage.data('zoom-image', this.activeImageVideoURL);
/* initialise zoom */
this.elevateZoom();
/* initialise zoom */
this.elevateZoom();
this.$root.$on('changeMagnifiedImage', ({smallImageUrl, largeImageUrl, currentType}) => {
this.$root.$on(
'changeMagnifiedImage',
({ smallImageUrl, largeImageUrl, currentType }) => {
/* removed old instance */
$('.zoomContainer').remove();
this.activeImage.removeData('elevateZoom');
@ -101,29 +104,30 @@
/* reinitialize zoom */
this.elevateZoom();
});
}
);
},
methods: {
elevateZoom: function () {
this.activeImage.ezPlus({
zoomLevel: 0.5,
cursor: 'pointer',
scrollZoom: true,
zoomWindowWidth: 250,
zoomWindowHeight: 250,
});
},
methods: {
elevateZoom: function () {
this.activeImage.ezPlus({
zoomLevel: 0.5,
cursor: 'pointer',
scrollZoom: true,
zoomWindowWidth: 250,
zoomWindowHeight: 250,
});
},
waitForElement: function (selector, callback) {
if (jQuery(selector).length) {
callback();
} else {
setTimeout(() => {
this.waitForElement(selector, callback);
}, 100);
}
},
}
}
waitForElement: function (selector, callback) {
if (jQuery(selector).length) {
callback();
} else {
setTimeout(() => {
this.waitForElement(selector, callback);
}, 100);
}
},
},
};
</script>

File diff suppressed because one or more lines are too long

View File

@ -1,67 +1,78 @@
const path = require('path');
const mix = require('laravel-mix');
const path = require('path');
const mix = require('laravel-mix');
const colors = require('colors');
require('laravel-mix-merge-manifest');
require('laravel-mix-clean');
const prodPublicPath = path.join('publishable', 'assets');
const devPublicPath = path.join('..', '..', '..', 'public', 'themes', 'velocity', 'assets');
const publicPath = mix.inProduction() ? prodPublicPath : devPublicPath;
const devPublicPath = path.join(
'..',
'..',
'..',
'public',
'themes',
'velocity',
'assets'
);
const publicPath = mix.inProduction() ? prodPublicPath : devPublicPath;
console.log(colors.bold.blue(`Assets will be published in: ${publicPath}`));
const assetsPath = path.join(__dirname, 'src', 'Resources', 'assets');
const jsPath = path.join(assetsPath, 'js');
const jsPath = path.join(assetsPath, 'js');
const imagesPath = path.join(assetsPath, 'images');
mix
.setPublicPath(publicPath)
mix.setPublicPath(publicPath)
.js(path.join(jsPath, 'jquery-ez-plus.js'), 'js/jquery-ez-plus.js')
.js(path.join(jsPath, 'app-core.js'), 'js/velocity-core.js')
.js(path.join(jsPath, 'app.js'), 'js/velocity.js')
.vue()
.alias({
'@Components': path.join(jsPath, 'UI', 'components')
})
'@Components': path.join(jsPath, 'UI', 'components'),
})
.extract({
to: `/js/components.js`,
test(mod){ return /(component|style|loader|node)/.test(mod.nameForCondition()) }
}
)
to: `/js/components.js`,
test(mod) {
return /(component|style|loader|node)/.test(mod.nameForCondition());
},
})
.copy(imagesPath, path.join(publicPath, 'images'))
.sass(
path.join(assetsPath, 'sass', 'admin.scss'),
path.join(__dirname, publicPath, 'css', 'velocity-admin.css'),
path.join(__dirname, publicPath, 'css', 'velocity-admin.css')
)
.sass(
path.join(assetsPath, 'sass', 'app.scss'),
path.join(__dirname, publicPath, 'css', 'velocity.css'),
{
sassOptions : {
includePaths: [ 'node_modules/bootstrap-sass/assets/stylesheets/' ]
}
sassOptions: {
includePaths: [
'node_modules/bootstrap-sass/assets/stylesheets/',
],
},
}
)
.clean({
// enable `dry` before adding new paths:
// dry: true,
cleanOnceBeforeBuildPatterns: [
'js/**/*',
'css/velocity.css',
'css/velocity-admin.css',
'mix-manifest.json',
]
})
// enable `dry` before adding new paths:
// dry: true,
cleanOnceBeforeBuildPatterns: [
'js/**/*',
'css/velocity.css',
'css/velocity-admin.css',
'mix-manifest.json',
],
})
.options({
processCssUrls: false,
clearConsole : mix.inProduction()
})
processCssUrls: false,
clearConsole: mix.inProduction(),
})
.disableNotifications()
.mergeManifest();