Explorar el Código

set PROD condition

Andrey Titovskiy hace 3 años
padre
commit
eb70d86dcf
Se han modificado 2 ficheros con 80 adiciones y 73 borrados
  1. 1 1
      package.json
  2. 79 72
      webpack.config.js

+ 1 - 1
package.json

@@ -4,7 +4,7 @@
   "description": "unicraft branding files",
   "main": "./build/index.js",
   "scripts": {
-    "build": "webpack",
+    "build": "webpack --mode=production",
     "start:dev": "webpack serve"
   },
   "author": "Unicraft TEAM",

+ 79 - 72
webpack.config.js

@@ -6,82 +6,89 @@ const autoprefixer = require('autoprefixer');
 
 const outputDirectory = "build";
 
-module.exports = {
-	entry: './src/branding.js',
-	output: {
-		library: 'Branding',
-		libraryTarget: 'umd',
-		path: path.resolve(__dirname, outputDirectory),
-		filename: 'index.js',
-	},
-	devtool: 'source-map',
-	module: {
-		rules: [
-			{
-				test: /\.jsx?$/,
-				exclude: /node_modules/,
-				use: [
-					{
-						loader: 'babel-loader',
-						options: {
-							presets: ['react']
+module.exports = mode => {
+
+	console.log('WEBPACK MODE: ', mode);
+	const PROD = (mode.WEBPACK_BUILD || false)
+	console.log('EXPORTS PROD: ', PROD);
+
+	return {
+		entry: PROD ? './src/branding.js' : './src/index.js',
+		output: {
+			library: 'Branding',
+			libraryTarget: 'umd',
+			path: path.resolve(__dirname, outputDirectory),
+			filename: 'index.js',
+		},
+		devtool: 'source-map',
+		module: {
+			rules: [
+				{
+					test: /\.jsx?$/,
+					exclude: /node_modules/,
+					use: [
+						{
+							loader: 'babel-loader',
+							options: {
+								presets: ['react']
+							}
 						}
-					}
-				]
-			},
-			{
-				test: /\.(sa|sc|c)ss$/,
-				use: [
-					MiniCssExtractPlugin.loader,
-					{
-						loader: "css-loader",
-						options: {
-							modules: false,
-							sourceMap: true,
-							importLoader: 2
+					]
+				},
+				{
+					test: /\.(sa|sc|c)ss$/,
+					use: [
+						MiniCssExtractPlugin.loader,
+						{
+							loader: "css-loader",
+							options: {
+								modules: false,
+								sourceMap: true,
+								importLoader: 2
+							}
+						},
+						"sass-loader"
+					]
+				},
+				{
+					test: /\.(cur|ico|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/,
+					use: {
+						loader: 'file-loader',
+						query: {
+							name: '[name].[hash:8].[ext]',
+							outputPath: './assets/media/',
+							publicPath: '/'
 						}
-					},
-					"sass-loader"
-				]
-			},
-			{
-				test: /\.(cur|ico|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/,
-				use: {
-					loader: 'file-loader',
-					query: {
-						name: '[name].[hash:8].[ext]',
-						outputPath: './assets/media/',
-						publicPath: '/'
 					}
-				}
-			},
-			{
-				test: /\.(mp4|webm|wav|mp3|m4a|aac|oga)(\?.*)?$/,
-				use: {
-					loader: 'url-loader',
-					query: {
-						limit: 10000,
-						name: '[name].[hash:8].[ext]',
-						outputPath: './assets/media/',
-						publicPath: '/'
+				},
+				{
+					test: /\.(mp4|webm|wav|mp3|m4a|aac|oga)(\?.*)?$/,
+					use: {
+						loader: 'url-loader',
+						query: {
+							limit: 10000,
+							name: '[name].[hash:8].[ext]',
+							outputPath: './assets/media/',
+							publicPath: '/'
+						}
 					}
 				}
-			}
+			]
+		},
+		devServer: {
+			historyApiFallback: true,
+			port: 3000,
+			open: true
+		},
+		plugins: [
+			...(PROD ? [new CleanWebpackPlugin([outputDirectory])] : []),
+			new HtmlWebpackPlugin({
+				template: './public/index.html',
+			}),
+			new MiniCssExtractPlugin({
+				filename: "style.css",
+				chunkFilename: "[name].css"
+			})
 		]
-	},
-	devServer: {
-		historyApiFallback: true,
-		port: 3000,
-		open: true
-	},
-	plugins: [
-		new CleanWebpackPlugin([outputDirectory]),
-		new HtmlWebpackPlugin({
-			template: './public/index.html',
-		}),
-		new MiniCssExtractPlugin({
-			filename: "style.css",
-			chunkFilename: "[name].css"
-		})
-	]
+	}
 };