forked from habitlab/habitlab
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack_habitlab_component_list_plugin.js
65 lines (53 loc) · 1.75 KB
/
webpack_habitlab_component_list_plugin.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
require('livescript-async')
const fs = require('fs')
const {
RawSource
} = require('webpack-sources')
const {list_all_custom_polymer_elements} = require('./add_habitlab_prefix_to_polymer_elements')
let cached_storage = null
async function get_storage() {
if (cached_storage != null) {
return cached_storage
}
const storage = require('node-persist')
await storage.init()
await storage.clear()
cached_storage = storage
return storage
}
function HabitLabComponentRenamePlugin(options) {
}
HabitLabComponentRenamePlugin.prototype.apply = function(compiler) {
const filename_to_cached_source = {}
const filename_to_cached_output = {}
compiler.plugin('emit', async function(compilation, callback) {
for (let filename of Object.keys(compilation.assets)) {
// console.log(filename)
//Should I add
if (!(filename.startsWith('frontend_utils/') || filename.startsWith('interventions/') || filename.match(/^\d/))) {
continue
}
console.log(filename);
let source_text = compilation.assets[filename].source()
console.log('source text is')
console.log(source_text)
let custom_elements = list_all_custom_polymer_elements(source_text)
console.log('custom elements is')
console.log(custom_elements)
let storage = await get_storage()
console.log('got storage')
for (let custom_element of custom_elements) {
await storage.setItem(custom_element, true)
}
}
//console.log(Object.keys(compilation.assets))
// console.log('CHUNKS')
// compilation.chunks.forEach(function(chunk) {
// console.log('next chunk:')
// //console.log(chunk)
// console.log('\n\n')
// })
callback()
})
}
module.exports = HabitLabComponentRenamePlugin