Remove old webpack config
This commit is contained in:
parent
d95ebf53a3
commit
3c29df09dc
1 changed files with 0 additions and 199 deletions
|
@ -1,199 +0,0 @@
|
||||||
// AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
|
|
||||||
const path = require ('path')
|
|
||||||
const WebpackSweetEntry = require('webpack-sweet-entry');
|
|
||||||
const CleanWebpackPlugin = require('clean-webpack-plugin');
|
|
||||||
const StringReplacePlugin = require("string-replace-webpack-plugin");
|
|
||||||
const ExtractTextPlugin = require("extract-text-webpack-plugin");
|
|
||||||
const webpack = require("webpack");
|
|
||||||
const CopyWebpackPlugin = require('copy-webpack-plugin')
|
|
||||||
const merge = require('webpack-merge');
|
|
||||||
const CompressionPlugin = require("compression-webpack-plugin");
|
|
||||||
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
|
|
||||||
|
|
||||||
const config_button=require('./config/settings.json');
|
|
||||||
|
|
||||||
const sourcePath = path.join(__dirname, 'client');
|
|
||||||
const buildPath = path.join(__dirname, 'public/client');
|
|
||||||
const translationPath = path.join(__dirname, 'public/javascripts/_final.js')
|
|
||||||
const reactEntrySourcePath = path.join(__dirname, 'javascripts')
|
|
||||||
const reactEntryOutputPath = path.join(__dirname, 'public')
|
|
||||||
|
|
||||||
|
|
||||||
let inProduction = process.env.NODE_ENV === 'production'
|
|
||||||
|
|
||||||
let devToProdLibraries = {
|
|
||||||
react:{
|
|
||||||
debug: "node_modules/react/umd/react.development.js",
|
|
||||||
production: "node_modules/react/umd/react.production.min.js"
|
|
||||||
},
|
|
||||||
reactDom: {
|
|
||||||
debug: "node_modules/react-dom/umd/react-dom.development.js",
|
|
||||||
production: "node_modules/react-dom/umd/react-dom.production.min.js"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let common_rules= [
|
|
||||||
|
|
||||||
// configure replacements for file patterns
|
|
||||||
{
|
|
||||||
test: /donate-button.v2.js$/,
|
|
||||||
loader: [
|
|
||||||
{loader: 'string-replace-loader',
|
|
||||||
options: {
|
|
||||||
search: 'REPLACE_FULL_HOST',
|
|
||||||
replace: config_button.button.url,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
loader: 'string-replace-loader',
|
|
||||||
options: {
|
|
||||||
search: 'REPLACE_CSS_URL',
|
|
||||||
replace: config_button.button.css,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"babel-loader"]
|
|
||||||
},
|
|
||||||
{ test: /\.tsx?$/, loader:"ts-loader"},
|
|
||||||
{ test: /\.js$/, exclude: /node_modules|froala/, loader: "babel-loader" },
|
|
||||||
{ test: /\.es6$/, exclude: /node_modules/, loader: "babel-loader" }
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
let targets = {
|
|
||||||
base: {
|
|
||||||
module:{
|
|
||||||
rules: common_rules
|
|
||||||
},
|
|
||||||
entry: WebpackSweetEntry(path.resolve(sourcePath, 'js/**/page.js'), 'js', 'js'),
|
|
||||||
output: {
|
|
||||||
path: path.resolve(buildPath, 'js'),
|
|
||||||
filename: '[name].js'
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new CleanWebpackPlugin([path.resolve(buildPath, 'js')])
|
|
||||||
]
|
|
||||||
}
|
|
||||||
,
|
|
||||||
button: {
|
|
||||||
module:{
|
|
||||||
rules: common_rules
|
|
||||||
},
|
|
||||||
entry: path.resolve(sourcePath, 'js/widget/donate-button.v2.js'),
|
|
||||||
output: {
|
|
||||||
path: path.resolve(path.join(__dirname, 'public', 'js')),
|
|
||||||
filename: 'donate-button.v2.js'
|
|
||||||
},
|
|
||||||
|
|
||||||
plugins: [
|
|
||||||
// an instance of the plugin must be present
|
|
||||||
new StringReplacePlugin()
|
|
||||||
]
|
|
||||||
},
|
|
||||||
translations: {
|
|
||||||
module:{
|
|
||||||
rules: common_rules
|
|
||||||
},
|
|
||||||
entry: translationPath,
|
|
||||||
output: {
|
|
||||||
path: path.join(buildPath, 'js'),
|
|
||||||
filename: 'i18n.js'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
css: {
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.css$/,
|
|
||||||
use: ExtractTextPlugin.extract({
|
|
||||||
use: [
|
|
||||||
{
|
|
||||||
loader: 'css-loader',
|
|
||||||
options: {import: true, importLoaders: 1}
|
|
||||||
}
|
|
||||||
, 'postcss-loader']
|
|
||||||
}
|
|
||||||
)
|
|
||||||
},
|
|
||||||
]
|
|
||||||
},
|
|
||||||
entry: path.resolve(sourcePath, 'css/global/page.css'),
|
|
||||||
output: {
|
|
||||||
path: path.resolve(buildPath, 'css/global'),
|
|
||||||
filename: 'page.css'
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new ExtractTextPlugin('page.css'),
|
|
||||||
new CleanWebpackPlugin([path.resolve(buildPath, 'css')])
|
|
||||||
]
|
|
||||||
},
|
|
||||||
bootstrap: {
|
|
||||||
entry: ['bootstrap-loader'],
|
|
||||||
output: {
|
|
||||||
path: path.resolve(buildPath, 'css'),
|
|
||||||
filename: 'bootstrap.css'
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new ExtractTextPlugin('bootstrap.css')
|
|
||||||
]
|
|
||||||
},
|
|
||||||
loading_indicator: {
|
|
||||||
module:{
|
|
||||||
rules: common_rules
|
|
||||||
},
|
|
||||||
entry: path.resolve(reactEntrySourcePath, "app", "loading_indicator.ts"),
|
|
||||||
output: {
|
|
||||||
path: path.resolve(reactEntryOutputPath, 'app'),
|
|
||||||
filename: 'loading_indicator.js'
|
|
||||||
},
|
|
||||||
|
|
||||||
},
|
|
||||||
react: {
|
|
||||||
module:{
|
|
||||||
rules: common_rules
|
|
||||||
},
|
|
||||||
entry: WebpackSweetEntry(path.resolve(reactEntrySourcePath, "app/*.tsx"), 'ts', 'app'),
|
|
||||||
output: {
|
|
||||||
path: path.resolve(reactEntryOutputPath, 'app'),
|
|
||||||
filename: '[name].js'
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
extensions: [".ts", ".tsx", ".js", ".json"],
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new CleanWebpackPlugin([path.resolve(reactEntryOutputPath, 'app')]),
|
|
||||||
new webpack.optimize.CommonsChunkPlugin({
|
|
||||||
name: 'vendor',
|
|
||||||
}),
|
|
||||||
new CopyWebpackPlugin([{from: inProduction ? devToProdLibraries.react.production : devToProdLibraries.react.debug, to: path.resolve('public', 'app', 'react.js')}]),
|
|
||||||
new CopyWebpackPlugin([{from: inProduction ? devToProdLibraries.reactDom.production : devToProdLibraries.reactDom.debug, to:path.resolve('public', 'app', 'react-dom.js')}])
|
|
||||||
|
|
||||||
],
|
|
||||||
externals: {
|
|
||||||
'react': 'React',
|
|
||||||
'react-dom': 'ReactDOM',
|
|
||||||
'i18n': 'I18n'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mergeToTargets = {
|
|
||||||
devtool: 'inline-source-map',
|
|
||||||
}
|
|
||||||
|
|
||||||
if (inProduction)
|
|
||||||
mergeToTargets = {
|
|
||||||
plugins: [
|
|
||||||
new UglifyJsPlugin(),
|
|
||||||
new CompressionPlugin({
|
|
||||||
asset: '[path].gz'
|
|
||||||
})
|
|
||||||
]}
|
|
||||||
let output = []
|
|
||||||
for(let name in targets){
|
|
||||||
output.push(merge(targets[name], mergeToTargets));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = output
|
|
Loading…
Reference in a new issue