-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
67 lines (56 loc) · 1.6 KB
/
index.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
const ExtractCssMediaQueriesPlugin = require('@elambro/extract-css-media-queries')
const mix = require("laravel-mix");
class ExtractCssMediaQueries {
/**
* The API name for the component.
*/
name() {
return 'extractMediaQueries';
}
/**
* Required dependencies for the component.
*/
dependencies() {
return ['css', 'clean-css', 'print-message']
}
/**
* Register the component.
*
* @param {*} src
* @param {string} output
* @param {Array} postCssPlugins
*/
register(userConfig) {
this.userConfig = userConfig;
this.plugin = new ExtractCssMediaQueriesPlugin(this.config());
}
/*
* Plugins to be merged with the master webpack config.
*
* @return {Array|Object}
*/
webpackPlugins() {
const plugin = this.plugin;
return [
plugin,
new class {
apply(compiler) {
// Works with
compiler.hooks.emit.tapAsync('ExtractCssMediaQueriesPlugin', (curCompiler, callback) => {
Object.entries(plugin.created).forEach(([name, path]) => {
Mix.manifest.addRaw ? Mix.manifest.addRaw(name, path) : Mix.manifest.manifest[name] = path;
});
callback();
});
}
}
]
}
config() {
return {
...this.userConfig
}
}
}
mix.extend('extractMediaQueries', new ExtractCssMediaQueries());
module.exports = ExtractCssMediaQueries;