Skip to content

Commit 7240cdf

Browse files
committed
fix: webpack.config and devdependencies
1 parent 9047924 commit 7240cdf

File tree

2 files changed

+68
-98
lines changed

2 files changed

+68
-98
lines changed

package.json

+3-8
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,14 @@
4545
},
4646
"main": "./src/index.js",
4747
"devDependencies": {
48-
"@babel/core": "^7.9.6",
49-
"@babel/preset-env": "^7.9.6",
50-
"babel-loader": "^8.1.0",
51-
"clean-webpack-plugin": "^3.0.0",
52-
"file-loader": "^6.2.0",
48+
"esbuild": "^0.25.2",
49+
"esbuild-loader": "^4.3.0",
5350
"mini-css-extract-plugin": "^1.5.0",
54-
"style-loader": "^3.3.1",
55-
"terser-webpack-plugin": "^5.1.1",
5651
"webpack": "^5.24.4",
5752
"webpack-cli": "^4.5.0",
5853
"webpack-log": "^3.0.1"
5954
},
6055
"dependencies": {
6156
"@cocreate/utils": "^1.38.0"
6257
}
63-
}
58+
}

webpack.config.js

+65-90
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,65 @@
1-
const path = require("path")
2-
const TerserPlugin = require("terser-webpack-plugin")
3-
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
4-
const { CleanWebpackPlugin } = require("clean-webpack-plugin")
5-
6-
module.exports = (env, argv) => {
7-
let isProduction = false
8-
if (argv.mode === 'production')
9-
isProduction = true
10-
11-
const config = {
12-
entry: {
13-
"CoCreate-element-prototype": "./src/index.js",
14-
},
15-
output: {
16-
path: path.resolve(__dirname, "dist"),
17-
filename: isProduction ? "[name].min.js" : "[name].js",
18-
libraryTarget: "umd",
19-
libraryExport: "default",
20-
library: ["CoCreate", "element-prototype"],
21-
globalObject: "this",
22-
},
23-
24-
plugins: [
25-
new CleanWebpackPlugin(),
26-
new MiniCssExtractPlugin({
27-
filename: "[name].css",
28-
}),
29-
],
30-
// Default mode for Webpack is production.
31-
// Depending on mode Webpack will apply different things
32-
// on final bundle. For now we don't need production's JavaScript
33-
// minifying and other thing so let's set mode to development
34-
mode: isProduction ? "production" : "development",
35-
module: {
36-
rules: [
37-
{
38-
test: /.js$/,
39-
exclude: /(node_modules)/,
40-
use: {
41-
loader: "babel-loader",
42-
options: {
43-
plugins: ["@babel/plugin-transform-modules-commonjs"],
44-
},
45-
},
46-
},
47-
{
48-
test: /.css$/i,
49-
use: [
50-
{ loader: "style-loader", options: { injectType: "linkTag" } },
51-
"file-loader",
52-
],
53-
},
54-
],
55-
},
56-
57-
// add source map
58-
...(isProduction ? {} : { devtool: "eval-source-map" }),
59-
60-
optimization: {
61-
minimize: true,
62-
minimizer: [
63-
new TerserPlugin({
64-
extractComments: true,
65-
// cache: true,
66-
parallel: true,
67-
// sourceMap: true, // Must be set to true if using source-maps in production
68-
terserOptions: {
69-
// https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
70-
// extractComments: 'all',
71-
compress: {
72-
drop_console: true,
73-
},
74-
},
75-
}),
76-
],
77-
splitChunks: {
78-
chunks: "all",
79-
minSize: 200,
80-
// maxSize: 99999,
81-
//minChunks: 1,
82-
83-
cacheGroups: {
84-
defaultVendors: false,
85-
},
86-
},
87-
},
88-
}
89-
return config
90-
}
1+
const path = require("path");
2+
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
3+
const { EsbuildPlugin } = require("esbuild-loader");
4+
const { FileUploader } = require("@cocreate/webpack");
5+
6+
module.exports = async (env, argv) => {
7+
const isProduction = argv && argv.mode === "production";
8+
const config = {
9+
entry: {
10+
"CoCreate-element-prototype": "./src/index.js"
11+
},
12+
output: {
13+
path: path.resolve(__dirname, "dist"),
14+
filename: isProduction ? "[name].min.js" : "[name].js",
15+
libraryExport: "default",
16+
library: ["CoCreate", "elementPrototype"],
17+
clean: true
18+
},
19+
plugins: [
20+
new MiniCssExtractPlugin({
21+
filename: isProduction ? "[name].min.css" : "[name].css"
22+
}),
23+
new FileUploader(env, argv)
24+
],
25+
mode: isProduction ? "production" : "development",
26+
devtool: isProduction ? "source-map" : "eval-source-map",
27+
module: {
28+
rules: [
29+
{
30+
test: /.js$/,
31+
exclude: /node_modules/,
32+
use: {
33+
loader: "esbuild-loader",
34+
options: {
35+
loader: "js",
36+
target: "es2017"
37+
}
38+
}
39+
},
40+
{
41+
test: /.css$/i,
42+
use: [MiniCssExtractPlugin.loader, "css-loader"]
43+
}
44+
]
45+
},
46+
optimization: {
47+
minimize: isProduction,
48+
minimizer: [
49+
new EsbuildPlugin({
50+
target: "es2017",
51+
css: true
52+
})
53+
],
54+
splitChunks: {
55+
cacheGroups: {
56+
defaultVendors: false
57+
}
58+
}
59+
},
60+
performance: {
61+
hints: isProduction ? "warning" : false
62+
}
63+
};
64+
return config;
65+
};

0 commit comments

Comments
 (0)