UNPKG

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