UNPKG

2.51 kBJavaScriptView Raw
1/**
2 * Quasar App Extension index/runner script
3 * (runs on each dev/build)
4 *
5 * Docs: https://quasar.dev/app-extensions/development-guide/index-api
6 * API: https://github.com/quasarframework/quasar/blob/master/app/lib/app-extension/IndexAPI.js
7 */
8
9function extendConf (conf) {
10 // register our boot file
11 conf.boot.push('~@quasar/quasar-app-extension-qmarkdown/src/boot/register.js')
12
13 // make sure app extension files & ui package gets transpiled
14 conf.build.transpileDependencies.push(/quasar-app-extension-qmarkdown[\\/]src/)
15
16 // make sure the stylesheet goes through webpack to avoid SSR issues
17 conf.css.push('~@quasar/quasar-ui-qmarkdown/src/index.sass')
18}
19
20module.exports = function (api) {
21 // Quasar compatibility check; you may need
22 // hard dependencies, as in a minimum version of the "quasar"
23 // package or a minimum version of "@quasar/app" CLI
24 api.compatibleWith('quasar', '^1.1.1')
25 api.compatibleWith('@quasar/app', '^1.1.0')
26
27 // Uncomment the line below if you provide a JSON API for your component
28 api.registerDescribeApi('QMarkdown', '~@quasar/quasar-ui-qmarkdown/dist/api/QMarkdown.json')
29
30 // We extend /quasar.conf.js
31 api.extendQuasarConf(extendConf)
32
33 // chain webpack
34 api.chainWebpack((chain, { isClient }) => chainWebpack(api, chain, isClient))
35}
36
37const chainWebpack = function (api, chain, { isClient }) {
38
39 if (api.prompts.import_md !== void 0 && api.prompts.import_md === true) {
40 console.log(` App Extension (qmarkdown) Info: 'Adding markdown loader to chainWebpack in your quasar.conf.js'`)
41 chain.module.rule('md')
42 .test(/\.md$/i)
43 .use('raw-loader')
44 .loader('raw-loader')
45 }
46
47 if (api.prompts.import_vmd !== void 0 && api.prompts.import_vmd === true) {
48 console.log(` App Extension (qmarkdown) Info: 'Adding .vmd (vue+markdown) loader to chainWebpack in your quasar.conf.js'`)
49 const rule = chain.module.rule('vmd')
50 .test(/\.vmd$/)
51 .pre()
52
53 rule.use('v-loader')
54 .loader('vue-loader')
55 .options({
56 productionMode: api.prod,
57 compilerOptions: {
58 preserveWhitespace: false
59 },
60 transformAssetUrls: {
61 video: 'src',
62 source: 'src',
63 img: 'src',
64 image: 'xlink:href'
65 }
66 })
67
68 rule.use('ware-loader')
69 .loader('ware-loader')
70 .options({
71 raw: true,
72 middleware: function (source) {
73 let rendered = renderMarkdown(source)
74 return `${rendered}`
75 }
76 })
77 }
78}