mirror of https://github.com/jenkinsci/jenkins.git
				
				
				
			
		
			
				
	
	
		
			183 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| const path = require("path");
 | |
| const MiniCSSExtractPlugin = require("mini-css-extract-plugin");
 | |
| const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
 | |
| const RemoveEmptyScriptsPlugin = require("webpack-remove-empty-scripts");
 | |
| const { CleanWebpackPlugin: CleanPlugin } = require("clean-webpack-plugin");
 | |
| 
 | |
| module.exports = (env, argv) => ({
 | |
|   mode: "development",
 | |
|   entry: {
 | |
|     pluginSetupWizard: [
 | |
|       path.join(__dirname, "src/main/js/pluginSetupWizard.js"),
 | |
|       path.join(__dirname, "src/main/scss/pluginSetupWizard.scss"),
 | |
|     ],
 | |
|     "plugin-manager-ui": [
 | |
|       path.join(__dirname, "src/main/js/plugin-manager-ui.js"),
 | |
|     ],
 | |
|     "add-item": [
 | |
|       path.join(__dirname, "src/main/js/add-item.js"),
 | |
|       path.join(__dirname, "src/main/js/add-item.scss"),
 | |
|     ],
 | |
|     "pages/computer-set": [
 | |
|       path.join(__dirname, "src/main/js/pages/computer-set"),
 | |
|     ],
 | |
|     "pages/dashboard": [path.join(__dirname, "src/main/js/pages/dashboard")],
 | |
|     "pages/manage-jenkins/system-information": [
 | |
|       path.join(
 | |
|         __dirname,
 | |
|         "src/main/js/pages/manage-jenkins/system-information",
 | |
|       ),
 | |
|     ],
 | |
|     app: [path.join(__dirname, "src/main/js/app.js")],
 | |
|     "pages/cloud-set": [
 | |
|       path.join(__dirname, "src/main/js/pages/cloud-set/index.js"),
 | |
|       path.join(__dirname, "src/main/js/pages/cloud-set/index.scss"),
 | |
|     ],
 | |
|     "pages/manage-jenkins": [
 | |
|       path.join(__dirname, "src/main/js/pages/manage-jenkins"),
 | |
|     ],
 | |
|     "pages/register": [path.join(__dirname, "src/main/js/pages/register")],
 | |
|     "keyboard-shortcuts": [
 | |
|       path.join(__dirname, "src/main/js/keyboard-shortcuts.js"),
 | |
|     ],
 | |
|     "sortable-drag-drop": [
 | |
|       path.join(__dirname, "src/main/js/sortable-drag-drop.js"),
 | |
|     ],
 | |
|     "section-to-sidebar-items": [
 | |
|       path.join(__dirname, "src/main/js/section-to-sidebar-items.js"),
 | |
|     ],
 | |
|     "section-to-tabs": [path.join(__dirname, "src/main/js/section-to-tabs.js")],
 | |
|     "components/row-selection-controller": [
 | |
|       path.join(__dirname, "src/main/js/components/row-selection-controller"),
 | |
|     ],
 | |
|     "pages/project/builds-card": [
 | |
|       path.join(__dirname, "src/main/js/pages/project/builds-card.js"),
 | |
|     ],
 | |
|     "simple-page": [path.join(__dirname, "src/main/scss/simple-page.scss")],
 | |
|     styles: [path.join(__dirname, "src/main/scss/styles.scss")],
 | |
|   },
 | |
|   output: {
 | |
|     path: path.join(__dirname, "war/src/main/webapp/jsbundles"),
 | |
|   },
 | |
|   devtool:
 | |
|     argv.mode === "production"
 | |
|       ? "source-map"
 | |
|       : "inline-cheap-module-source-map",
 | |
|   plugins: [
 | |
|     new RemoveEmptyScriptsPlugin({}),
 | |
|     new MiniCSSExtractPlugin({
 | |
|       filename: "[name].css",
 | |
|     }),
 | |
|     // Clean all assets within the specified output.
 | |
|     // It will not clean copied fonts
 | |
|     new CleanPlugin(),
 | |
|   ],
 | |
|   module: {
 | |
|     rules: [
 | |
|       {
 | |
|         test: /\.(css|scss)$/,
 | |
|         use: [
 | |
|           "style-loader",
 | |
|           {
 | |
|             loader: MiniCSSExtractPlugin.loader,
 | |
|             options: {
 | |
|               esModule: false,
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             loader: "css-loader",
 | |
|             options: {
 | |
|               sourceMap: true,
 | |
|               // ignore the URLS on the base styles as they are picked
 | |
|               // from the war/src/main/webapp/images dir
 | |
|               url: {
 | |
|                 filter: (url, resourcePath) => {
 | |
|                   return !resourcePath.includes("styles.scss");
 | |
|                 },
 | |
|               },
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             loader: "postcss-loader",
 | |
|             options: {
 | |
|               sourceMap: true,
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             loader: "sass-loader",
 | |
|             options: {
 | |
|               sourceMap: true,
 | |
|             },
 | |
|           },
 | |
|         ],
 | |
|       },
 | |
|       {
 | |
|         test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
 | |
|         type: "asset/resource",
 | |
|         generator: {
 | |
|           filename: "fonts/[name].[ext]",
 | |
|         },
 | |
|       },
 | |
|       {
 | |
|         test: /\.hbs$/,
 | |
|         loader: "handlebars-loader",
 | |
|         options: {
 | |
|           // The preferred option for adding handlebars helpers is putting them
 | |
|           // inside this helpers directory
 | |
|           helperDirs: path.join(__dirname, "src/main/js/handlebars-helpers"),
 | |
|           precompileOptions: {
 | |
|             knownHelpersOnly: false,
 | |
|             // Helpers registered with Handlebars.registerHelper must be listed so that
 | |
|             // handlebars-loader will expect them when compiling the templates.
 | |
|             // This helpers cannot be moved to the helpers directory because they are closures
 | |
|             knownHelpers: [
 | |
|               "pluginCountForCategory",
 | |
|               "totalPluginCount",
 | |
|               "inSelectedPlugins",
 | |
|               "dependencyCount",
 | |
|               "eachDependency",
 | |
|               "ifVisibleDependency",
 | |
|             ],
 | |
|           },
 | |
|         },
 | |
|       },
 | |
|       {
 | |
|         test: /\.js$/,
 | |
|         exclude: /node_modules/,
 | |
|         loader: "babel-loader",
 | |
|       },
 | |
|     ],
 | |
|   },
 | |
|   optimization: {
 | |
|     splitChunks: {
 | |
|       chunks: "async",
 | |
|       cacheGroups: {
 | |
|         commons: {
 | |
|           test: /[\\/]node_modules[\\/]/,
 | |
|           name: "vendors",
 | |
|           chunks: "all",
 | |
|         },
 | |
|       },
 | |
|     },
 | |
|     minimizer: [
 | |
|       new CssMinimizerPlugin({
 | |
|         minimizerOptions: {
 | |
|           preset: [
 | |
|             "default",
 | |
|             {
 | |
|               svgo: { exclude: true },
 | |
|             },
 | |
|           ],
 | |
|         },
 | |
|       }),
 | |
|     ],
 | |
|   },
 | |
|   resolve: {
 | |
|     alias: {
 | |
|       "@": path.resolve(__dirname, "src/main/js"),
 | |
|       // Needed to be able to register helpers at runtime
 | |
|       handlebars: "handlebars/runtime",
 | |
|     },
 | |
|   },
 | |
| });
 |