UNPKG

780 BJavaScriptView Raw
1// Usage: `require('carmi/loader!./file.carmi')`
2// or just setup as a default loader for `.carmi.js$` files
3
4'use strict'
5
6const loaderUtils = require('loader-utils')
7const processCarmi = require('./api')
8
9module.exports = function CarmiLoader() {
10 const callback = this.async()
11 const loaderOptions = loaderUtils.getOptions(this) || {}
12
13 const options = {
14 source: this.getDependencies()[0],
15 format: 'cjs',
16 ...loaderOptions
17 }
18
19 try {
20 const {code, dependencies} = processCarmi(options)
21
22 Object.keys(dependencies).forEach((filePath) => {
23 // Add those modules as loader dependencies
24 // See https://webpack.js.org/contribute/writing-a-loader/#loader-dependencies
25 this.addDependency(filePath)
26 })
27
28 callback(null, code)
29 } catch (error) {
30 callback(error)
31 }
32}