Update build options
This commit is contained in:
parent
f7370a7cdc
commit
e82bd3fbfb
|
|
@ -4,85 +4,62 @@ const config = require('../config')
|
||||||
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||||
const packageConfig = require('../package.json')
|
const packageConfig = require('../package.json')
|
||||||
|
|
||||||
exports.assetsPath = function (_path) {
|
const isDev = process.env.NODE_ENV !== 'production';
|
||||||
const assetsSubDirectory = process.env.NODE_ENV === 'production'
|
|
||||||
? config.build.assetsSubDirectory
|
const styleRule = (scss) => {
|
||||||
: config.dev.assetsSubDirectory
|
const test = scss ? /\.scss$/ : /\.css$/;
|
||||||
|
let use = [
|
||||||
|
{
|
||||||
|
loader: 'css-loader',
|
||||||
|
// options: {importLoaders: scss ? 3 : 2}
|
||||||
|
options: {
|
||||||
|
sourceMap: isDev,
|
||||||
|
importLoaders: scss ? 2 : 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'postcss-loader'
|
||||||
|
];
|
||||||
|
if (scss) {
|
||||||
|
use = [
|
||||||
|
...use,
|
||||||
|
{
|
||||||
|
loader: 'sass-loader',
|
||||||
|
options: {
|
||||||
|
data: process.env.THEME ? `@import "styles/themes/_${process.env.THEME}.scss";` : '',
|
||||||
|
sourceMap: isDev
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isDev) {
|
||||||
|
return {
|
||||||
|
test,
|
||||||
|
loader: ExtractTextPlugin.extract({
|
||||||
|
use,
|
||||||
|
fallback: 'vue-style-loader'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
test,
|
||||||
|
use: [
|
||||||
|
'vue-style-loader',
|
||||||
|
...use
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const assetsPath = (_path) => {
|
||||||
|
const assetsSubDirectory = isDev
|
||||||
|
? config.dev.assetsSubDirectory
|
||||||
|
: config.build.assetsSubDirectory
|
||||||
|
|
||||||
return path.posix.join(assetsSubDirectory, _path)
|
return path.posix.join(assetsSubDirectory, _path)
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.cssLoaders = function (options) {
|
const createNotifierCallback = () => {
|
||||||
options = options || {}
|
|
||||||
|
|
||||||
const cssLoader = {
|
|
||||||
loader: 'css-loader',
|
|
||||||
options: {
|
|
||||||
sourceMap: options.sourceMap
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const postcssLoader = {
|
|
||||||
loader: 'postcss-loader',
|
|
||||||
options: {
|
|
||||||
sourceMap: options.sourceMap
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// generate loader string to be used with extract text plugin
|
|
||||||
function generateLoaders (loader, loaderOptions) {
|
|
||||||
const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
|
|
||||||
|
|
||||||
if (loader) {
|
|
||||||
loaders.push({
|
|
||||||
loader: loader + '-loader',
|
|
||||||
options: Object.assign({}, loaderOptions, {
|
|
||||||
sourceMap: options.sourceMap
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extract CSS when that option is specified
|
|
||||||
// (which is the case during production build)
|
|
||||||
if (options.extract) {
|
|
||||||
return ExtractTextPlugin.extract({
|
|
||||||
use: loaders,
|
|
||||||
fallback: 'vue-style-loader'
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
return ['vue-style-loader'].concat(loaders)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
|
|
||||||
return {
|
|
||||||
css: generateLoaders(),
|
|
||||||
postcss: generateLoaders(),
|
|
||||||
less: generateLoaders('less'),
|
|
||||||
sass: generateLoaders('sass', { indentedSyntax: true }),
|
|
||||||
scss: generateLoaders('sass'),
|
|
||||||
stylus: generateLoaders('stylus'),
|
|
||||||
styl: generateLoaders('stylus')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generate loaders for standalone style files (outside of .vue)
|
|
||||||
exports.styleLoaders = function (options) {
|
|
||||||
const output = []
|
|
||||||
const loaders = exports.cssLoaders(options)
|
|
||||||
|
|
||||||
for (const extension in loaders) {
|
|
||||||
const loader = loaders[extension]
|
|
||||||
output.push({
|
|
||||||
test: new RegExp('\\.' + extension + '$'),
|
|
||||||
use: loader
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return output
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.createNotifierCallback = () => {
|
|
||||||
const notifier = require('node-notifier')
|
const notifier = require('node-notifier')
|
||||||
|
|
||||||
return (severity, errors) => {
|
return (severity, errors) => {
|
||||||
|
|
@ -99,3 +76,10 @@ exports.createNotifierCallback = () => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
styleRule,
|
||||||
|
isDev,
|
||||||
|
assetsPath,
|
||||||
|
createNotifierCallback
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,6 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
const utils = require('./utils')
|
|
||||||
const config = require('../config')
|
const config = require('../config')
|
||||||
const isProduction = process.env.NODE_ENV === 'production'
|
|
||||||
const sourceMapEnabled = isProduction
|
|
||||||
? config.build.productionSourceMap
|
|
||||||
: config.dev.cssSourceMap
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
// loaders: utils.cssLoaders({
|
|
||||||
// sourceMap: sourceMapEnabled,
|
|
||||||
// todo: need that?
|
|
||||||
// extract: isProduction
|
|
||||||
// }),
|
|
||||||
// cssSourceMap: sourceMapEnabled,
|
|
||||||
// cacheBusting: config.dev.cacheBusting,
|
// cacheBusting: config.dev.cacheBusting,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,53 +1,16 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const utils = require('./utils')
|
|
||||||
const config = require('../config')
|
const config = require('../config')
|
||||||
const vueLoaderConfig = require('./vue-loader.conf')
|
|
||||||
|
|
||||||
const VueLoaderPlugin = require('vue-loader/lib/plugin')
|
const VueLoaderPlugin = require('vue-loader/lib/plugin')
|
||||||
const ExtractTextPlugin = require("extract-text-webpack-plugin")
|
|
||||||
|
const {isDev, styleRule, assetsPath} = require('./utils');
|
||||||
|
|
||||||
function resolve(dir) {
|
function resolve(dir) {
|
||||||
return path.join(__dirname, '..', dir)
|
return path.join(__dirname, '..', dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
const styleRule = (scss) => {
|
|
||||||
const test = scss ? /\.scss$/ : /\.css$/;
|
|
||||||
let use;
|
|
||||||
if (scss) {
|
|
||||||
use = [
|
|
||||||
'css-loader',
|
|
||||||
{
|
|
||||||
loader: 'sass-loader',
|
|
||||||
options: {
|
|
||||||
data: process.env.THEME ? `@import "styles/themes/_${process.env.THEME}.scss";` : ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
} else {
|
|
||||||
use = [
|
|
||||||
'css-loader'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
return {
|
|
||||||
test,
|
|
||||||
loader: ExtractTextPlugin.extract({
|
|
||||||
use,
|
|
||||||
fallback: 'vue-style-loader'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return {
|
|
||||||
test,
|
|
||||||
use: [
|
|
||||||
'vue-style-loader',
|
|
||||||
...use
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const createLintingRule = () => ({
|
const createLintingRule = () => ({
|
||||||
test: /\.(js|vue)$/,
|
test: /\.(js|vue)$/,
|
||||||
|
|
@ -60,7 +23,7 @@ const createLintingRule = () => ({
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
//todo on monday: mini-css-extract-plugin?
|
//todo: mini-css-extract-plugin? upgrade to webpack 4, then use this
|
||||||
//https://github.com/webpack-contrib/mini-css-extract-plugin
|
//https://github.com/webpack-contrib/mini-css-extract-plugin
|
||||||
//todo: do we need postcss?
|
//todo: do we need postcss?
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
@ -71,9 +34,9 @@ module.exports = {
|
||||||
output: {
|
output: {
|
||||||
path: config.build.assetsRoot,
|
path: config.build.assetsRoot,
|
||||||
filename: '[name].js',
|
filename: '[name].js',
|
||||||
publicPath: process.env.NODE_ENV === 'production'
|
publicPath: isDev
|
||||||
? config.build.assetsPublicPath
|
? config.dev.assetsPublicPath
|
||||||
: config.dev.assetsPublicPath
|
: config.build.assetsPublicPath
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: ['.js', '.vue', '.json', '.gql', '.graphql', '.scss'],
|
extensions: ['.js', '.vue', '.json', '.gql', '.graphql', '.scss'],
|
||||||
|
|
@ -115,7 +78,7 @@ module.exports = {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
name: utils.assetsPath('img/[name].[hash:7].[ext]')
|
name: assetsPath('img/[name].[hash:7].[ext]')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -123,7 +86,7 @@ module.exports = {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
name: utils.assetsPath('media/[name].[hash:7].[ext]')
|
name: assetsPath('media/[name].[hash:7].[ext]')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -131,19 +94,10 @@ module.exports = {
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: {
|
options: {
|
||||||
limit: 10000,
|
limit: 10000,
|
||||||
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
|
name: assetsPath('fonts/[name].[hash:7].[ext]')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
styleRule(false), // css rule
|
styleRule(false), // css rule
|
||||||
// {
|
|
||||||
// test: /\.css$/,
|
|
||||||
// use: [
|
|
||||||
// process.env.NODE_ENV !== 'production'
|
|
||||||
// ? 'vue-style-loader'
|
|
||||||
// : MiniCssExtractPlugin.loader,
|
|
||||||
// 'css-loader'
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
styleRule(true) // sass rule
|
styleRule(true) // sass rule
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,6 @@ const HOST = process.env.HOST
|
||||||
const PORT = process.env.PORT && Number(process.env.PORT)
|
const PORT = process.env.PORT && Number(process.env.PORT)
|
||||||
|
|
||||||
const devWebpackConfig = merge(baseWebpackConfig, {
|
const devWebpackConfig = merge(baseWebpackConfig, {
|
||||||
// module: {
|
|
||||||
// rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
|
|
||||||
// },
|
|
||||||
// cheap-module-eval-source-map is faster for development
|
// cheap-module-eval-source-map is faster for development
|
||||||
devtool: config.dev.devtool,
|
devtool: config.dev.devtool,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@
|
||||||
update(data) {
|
update(data) {
|
||||||
return this.$getRidOfEdges(data).topic || {};
|
return this.$getRidOfEdges(data).topic || {};
|
||||||
},
|
},
|
||||||
result(r, key) {
|
result() {
|
||||||
if (this.saveMe) {
|
if (this.saveMe) {
|
||||||
this.saveMe = false;
|
this.saveMe = false;
|
||||||
this.updateLastVisitedTopic(this.topic.id);
|
this.updateLastVisitedTopic(this.topic.id);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
@import '~vue-toast-notification/dist/theme-default.css';
|
@import 'vue-toast-notification/dist/theme-default.css';
|
||||||
|
|
||||||
.toast .toast-text {
|
.toast .toast-text {
|
||||||
color: $color-white;
|
color: $color-white;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue