forked from quasarframework/vue-cli-plugin-quasar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
106 lines (90 loc) · 3.05 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
const fs = require('fs')
const path = require('path')
const webpack = require('webpack')
const { merge } = require('webpack-merge')
const getDevlandFile = require('./lib/get-devland-file')
const { version } = getDevlandFile('quasar/package.json')
const transformAssetUrls = getDevlandFile('quasar/dist/transforms/loader-asset-urls.json')
function getCssPreprocessor (api) {
return ['sass', 'scss'].find(ext => {
return fs.existsSync(
api.resolve('src/styles/quasar.variables.' + ext)
)
})
}
function applyCssRule (rule, cssPreprocessor) {
rule
.use('quasar-sass-variables-loader')
.loader(path.join(__dirname, `lib/loader.${cssPreprocessor}.js`))
}
function applyCssLoaders (chain, cssPreprocessor) {
const rule = chain.module.rule(cssPreprocessor)
applyCssRule(rule.oneOf('vue-modules'), cssPreprocessor)
applyCssRule(rule.oneOf('vue'), cssPreprocessor)
applyCssRule(rule.oneOf('normal-modules'), cssPreprocessor)
applyCssRule(rule.oneOf('normal'), cssPreprocessor)
}
module.exports = (api, options) => {
if (options.pluginOptions.quasar.rtlSupport) {
process.env.QUASAR_RTL = true
}
const cssPreprocessor = getCssPreprocessor(api)
api.chainWebpack(chain => {
if (cssPreprocessor) {
chain.resolve.alias
.set(
'quasar-variables',
api.resolve(`src/styles/quasar.variables.${cssPreprocessor}`)
)
.set(
'quasar-variables-styl',
`quasar/src/css/variables.sass`
)
.set(
'quasar-styl',
`quasar/dist/quasar.sass`
)
.set(
'quasar-addon-styl',
`quasar/src/css/flex-addon.sass`
)
applyCssLoaders(chain, 'sass')
applyCssLoaders(chain, 'scss')
}
chain.plugin('define-quasar')
.use(webpack.DefinePlugin, [{
__QUASAR_VERSION__: `'${version}'`,
__QUASAR_SSR__: false,
__QUASAR_SSR_SERVER__: false,
__QUASAR_SSR_CLIENT__: false,
__QUASAR_SSR_PWA__: false,
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
}])
chain.performance.maxEntrypointSize(512000)
const strategy = options.pluginOptions.quasar.importStrategy || 'kebab'
chain.module.rule('vue').use('vue-loader').tap(options => ({
...options,
transformAssetUrls: merge(
options.transformAssetUrls || {},
transformAssetUrls
)
}))
if (['kebab', 'pascal', 'combined'].includes(strategy)) {
chain.module.rule('vue')
.use('vue-auto-import-quasar')
.loader(path.join(__dirname, 'lib/loader.vue.auto-import-quasar.js'))
.options({ strategy })
.before('vue-loader')
chain.module.rule('js-transform-quasar-imports')
.test(/\.(t|j)sx?$/)
.use('js-transform-quasar-imports')
.loader(path.join(__dirname, 'lib/loader.js.transform-quasar-imports.js'))
}
else {
console.error(`Incorrect setting for quasar > importStrategy (${strategy})`)
console.error(`Use one of: 'kebab', 'pascal', 'combined'.`)
console.log()
process.exit(1)
}
})
}