@@ -7,13 +7,17 @@ const {
77} = require ( 'node:path' ) ;
88
99const { env} = require ( 'node:process' ) ;
10- const { EnvironmentPlugin} = require ( 'webpack' ) ;
10+ const {
11+ EnvironmentPlugin,
12+ NormalModuleReplacementPlugin,
13+ } = require ( 'webpack' ) ;
1114const WebpackBar = require ( 'webpackbar' ) ;
1215
13- const ServiceWorkerWebpackPlugin = require ( 'serviceworker-webpack-plugin' ) ;
14-
1516const modules = './modules' ;
1617const dirModules = './client/modules' ;
18+ const dirCss = './css' ;
19+ const dirThemes = `${ dirCss } /themes` ;
20+ const dirColumns = `${ dirCss } /columns` ;
1721const dir = './client' ;
1822const { NODE_ENV } = env ;
1923const isDev = NODE_ENV === 'development' ;
@@ -46,19 +50,43 @@ const rules = clean([
4650] ) ;
4751
4852const plugins = [
53+ new NormalModuleReplacementPlugin ( / ^ n o d e : / , ( resource ) => {
54+ resource . request = resource . request . replace ( / ^ n o d e : / , '' ) ;
55+ } ) ,
4956 new EnvironmentPlugin ( {
5057 NODE_ENV ,
5158 } ) ,
52- new ServiceWorkerWebpackPlugin ( {
53- entry : join ( __dirname , '..' , 'client' , 'sw' , 'sw.js' ) ,
54- excludes : [ '*' ] ,
55- } ) ,
5659 new WebpackBar ( ) ,
5760] ;
5861
5962const splitChunks = {
60- name : 'cloudcmd.common' ,
6163 chunks : 'all' ,
64+ cacheGroups : {
65+ abcCommon : {
66+ name : 'cloudcmd.common' ,
67+ chunks : ( chunk ) => {
68+ const lazyChunks = [
69+ 'nojs' ,
70+ 'view' ,
71+ 'edit' ,
72+ 'terminal' ,
73+ 'config' ,
74+ 'user-menu' ,
75+ 'help' ,
76+ 'themes/dark' ,
77+ 'themes/light' ,
78+ 'columns/name-size' ,
79+ 'columns/name-size-date' ,
80+ ] ;
81+
82+ return ! lazyChunks . includes ( chunk . name ) ;
83+ } ,
84+ minChunks : 1 ,
85+ enforce : true ,
86+ priority : - 1 ,
87+ reuseExistingChunk : true ,
88+ } ,
89+ } ,
6290} ;
6391
6492module . exports = {
@@ -68,12 +96,27 @@ module.exports = {
6896 'node:process' : 'process' ,
6997 'node:path' : 'path' ,
7098 } ,
99+ fallback : {
100+ 'path' : require . resolve ( 'path-browserify' ) ,
101+ 'process' : require . resolve ( 'process/browser' ) ,
102+ } ,
71103 } ,
72104 devtool,
73105 optimization : {
74106 splitChunks,
75107 } ,
76108 entry : {
109+ 'themes/dark' : `${ dirThemes } /dark.css` ,
110+ 'themes/light' : `${ dirThemes } /light.css` ,
111+ 'columns/name-size' : `${ dirColumns } /name-size.css` ,
112+ 'columns/name-size-date' : `${ dirColumns } /name-size-date.css` ,
113+ 'nojs' : `${ dirCss } /nojs.css` ,
114+ help : `${ dirCss } /help.css` ,
115+ view : `${ dirCss } /view.css` ,
116+ config : `${ dirCss } /config.css` ,
117+ terminal : `${ dirCss } /terminal.css` ,
118+ 'user-menu' : `${ dirCss } /user-menu.css` ,
119+ sw : `${ dir } /sw/sw.js` ,
77120 cloudcmd : `${ dir } /cloudcmd.js` ,
78121 [ `${ modules } /edit` ] : `${ dirModules } /edit.js` ,
79122 [ `${ modules } /edit-file` ] : `${ dirModules } /edit-file.js` ,
0 commit comments