Primo committ Notevole

This commit is contained in:
Paolo Arena
2019-12-28 11:16:53 +01:00
commit 5d32378df8
174 changed files with 29861 additions and 0 deletions

27
config/envparser.js Normal file
View File

@@ -0,0 +1,27 @@
const DotEnv = require('dotenv')
let path
switch (process.env.NODE_ENV) {
case 'test':
path = `.env.test`
break
case 'development':
path = `.env.development`
break
default:
path = `.env.production`
break
}
// console.log("PATH", path)
const parsedEnv = DotEnv.config({ path }).parsed;
module.exports = function () {
// Let's stringify our variables
for (key in parsedEnv) {
if (typeof parsedEnv[key] === 'string') {
parsedEnv[key] = JSON.stringify(parsedEnv[key])
}
}
return parsedEnv
};

3
config/helpers/env.js Normal file
View File

@@ -0,0 +1,3 @@
module.exports = function (key, fallback) {
return process.env[key] || fallback
}

View File

@@ -0,0 +1,113 @@
const path = require('path');
const helpers = require('./helpers');
const webpack = require('webpack')
const FaviconsWebpackPlugin = require('favicons-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const autoprefixer = require('autoprefixer');
const cssNext = require('postcss-cssnext');
const postcssImport = require('postcss-import');
const PrerenderSPAPlugin = require('prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
const baseConfig = {
entry: {
'bundle': helpers.root('/src/main.ts'),
},
output: {
filename: '[nametranslate].js',
publicPath: '/',
path: helpers.root('dist'),
},
resolve: {
extensions: [
'.ts', '.js', '.vue',
],
alias: {
'@components': helpers.root('src/components/index.ts'),
'@views': helpers.root('src/views/index.ts'),
'@src': helpers.root('src'),
'@icons': helpers.root('src/assets/icons'),
'@images': helpers.root('src/assets/images'),
'@classes': helpers.root('src/classes/index.ts'),
'@fonts': helpers.root('src/assets/fonts'),
'@utils': helpers.root('src/utils/index.ts'),
'@css': helpers.root('src/styles/variables.scss'),
'@router': helpers.root('src/router/index.ts'),
'@validators': helpers.root('src/utils/validators.ts'),
'@methods': helpers.root('src/utils/methods.ts'),
'@filters': helpers.root('src/utils/filters.ts'),
'@api': helpers.root('src/store/Api/index.ts'),
'@paths': helpers.root('src/store/Api/ApiRoutes.ts'),
'@types': helpers.root('src/typings/index.ts'),
'@store': helpers.root('src/store/index.ts'),
'@modules': helpers.root('src/store/Modules/index.ts'),
}
},
module: {
rules: [{
test: /\.vue$/,
use: {
loader: 'vue-loader',
options: {
postcss: {
plugins: [cssNext()],
options: {
sourceMap: true,
}
},
cssSourceMap: true,
loaders: {
scss: ['vue-style-loader', 'css-loader','sass-loader', {
loader: 'sass-resources-loader',
options: {
resources: helpers.root('src/styles/variables.scss'),
esModule: true,
}
}],
ts: 'ts-loader',
}
},
}
}, {
test: /\.ts$/,
exclude: /node_modules/,
loader: 'ts-loader',
options: {
appendTsSuffixTo: [/\.vue$/]
}
}, {
test: /\.(jpe?g|png|ttf|eot|woff(2)?)(\?[a-z0-9=&.]+)?$/,
use: 'base64-inline-loader?limit=1000&nametranslate=[nametranslate].[ext]'
},{
test: /\.(svg)(\?[a-z0-9=&.]+)?$/,
use: 'base64-inline-loader?limit=4000&nametranslate=[nametranslate].[ext]'
}
]
},
plugins: [
new FaviconsWebpackPlugin({
logo: helpers.root('src/assets/images/logo_M.png'),
persistentCache: true,
inject: true,
background: '#fff',
icons: {
android: false,
appleIcon: false,
appleStartup: false,
coast: false,
favicons: true,
firefox: false,
opengraph: false,
twitter: false,
yandex: false,
windows: false
}
}),
new CopyWebpackPlugin([{
from: helpers.root('src/assets')
}]),
],
};
module.exports = baseConfig;

View File

@@ -0,0 +1,91 @@
const webpackBaseConfig = require('./webpack.config.base');
const env = require('../environment/dev.env');
const webpack = require('webpack')
const path = require('path');
const helpers = require('./helpers');
const merge = require('webpack-merge')
const HtmlWebpackPlugin = require('html-webpack-plugin');
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
const webpackDashboard = require('webpack-dashboard/plugin');
const DefinePlugin = require('webpack/lib/DefinePlugin');
const autoprefixer = require('autoprefixer');
const PrerenderSPAPlugin = require('prerender-spa-plugin')
const webpackDevConfig = {
module: {
rules: [{
test: /\.s?css$/,
use: [{
loader: 'style-loader'
}, {
loader: 'css-loader',
options: {
minimize: false,
sourceMap: true,
importLoaders: 2
}
}, {
loader: 'postcss-loader',
options: {
plugins: () => [autoprefixer],
sourceMap: true
}
}, {
loader: 'sass-loader',
options: {
outputStyle: 'expanded',
sourceMap: true,
sourceMapContents: true
}
}],
}]
},
plugins: [
new HtmlWebpackPlugin({
inject: true,
template: helpers.root('/src/index.html'),
filename: 'index.html',
favicon: helpers.root('/src/assets/images/logo_M.png')
}),
new DefinePlugin({
'process.env': env
}),
new webpackDashboard(),
new FriendlyErrorsPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),
],
devServer: {
contentBase: path.join(__dirname, "dist"),
port: 5000,
historyApiFallback: true,
disableHostCheck: true,
host: "0.0.0.0",
hot: true,
open: true,
quiet: true,
inline: true,
noInfo: true,
stats: {
colors: true,
hash: false,
version: false,
timings: false,
assets: false,
chunks: false,
modules: false,
reasons: false,
children: false,
source: false,
errors: true,
errorDetails: true,
warnings: false,
publicPath: false
}
},
devtool: 'cheap-module-eval-source-map'
}
const devExport = merge(webpackBaseConfig, webpackDevConfig);
module.exports = devExport;