Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
fcwu
GitHub Repository: fcwu/docker-ubuntu-vnc-desktop
Path: blob/develop/web/build/utils.js
387 views
1
'use strict'
2
const path = require('path')
3
const config = require('../config')
4
const ExtractTextPlugin = require('extract-text-webpack-plugin')
5
const packageConfig = require('../package.json')
6
7
exports.assetsPath = function (_path) {
8
const assetsSubDirectory = process.env.NODE_ENV === 'production'
9
? config.build.assetsSubDirectory
10
: config.dev.assetsSubDirectory
11
12
return path.posix.join(assetsSubDirectory, _path)
13
}
14
15
exports.cssLoaders = function (options) {
16
options = options || {}
17
18
const cssLoader = {
19
loader: 'css-loader',
20
options: {
21
sourceMap: options.sourceMap
22
}
23
}
24
25
const postcssLoader = {
26
loader: 'postcss-loader',
27
options: {
28
sourceMap: options.sourceMap
29
}
30
}
31
32
// generate loader string to be used with extract text plugin
33
function generateLoaders (loader, loaderOptions) {
34
const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
35
36
if (loader) {
37
loaders.push({
38
loader: loader + '-loader',
39
options: Object.assign({}, loaderOptions, {
40
sourceMap: options.sourceMap
41
})
42
})
43
}
44
45
// Extract CSS when that option is specified
46
// (which is the case during production build)
47
if (options.extract) {
48
return ExtractTextPlugin.extract({
49
use: loaders,
50
fallback: 'vue-style-loader'
51
})
52
} else {
53
return ['vue-style-loader'].concat(loaders)
54
}
55
}
56
57
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
58
return {
59
css: generateLoaders(),
60
postcss: generateLoaders(),
61
less: generateLoaders('less'),
62
sass: generateLoaders('sass', { indentedSyntax: true }),
63
scss: generateLoaders('sass'),
64
stylus: generateLoaders('stylus'),
65
styl: generateLoaders('stylus')
66
}
67
}
68
69
// Generate loaders for standalone style files (outside of .vue)
70
exports.styleLoaders = function (options) {
71
const output = []
72
const loaders = exports.cssLoaders(options)
73
74
for (const extension in loaders) {
75
const loader = loaders[extension]
76
output.push({
77
test: new RegExp('\\.' + extension + '$'),
78
use: loader
79
})
80
}
81
82
return output
83
}
84
85
exports.createNotifierCallback = () => {
86
const notifier = require('node-notifier')
87
88
return (severity, errors) => {
89
if (severity !== 'error') return
90
91
const error = errors[0]
92
const filename = error.file && error.file.split('!').pop()
93
94
notifier.notify({
95
title: packageConfig.name,
96
message: severity + ': ' + error.name,
97
subtitle: filename || '',
98
icon: path.join(__dirname, 'logo.png')
99
})
100
}
101
}
102
103