Webpack copies the NOTICE-js to the output folder and puts a header with url to the notice in every webpack file
This commit is contained in:
		
							parent
							
								
									363dcdbdee
								
							
						
					
					
						commit
						233e16799d
					
				
					 5 changed files with 82 additions and 5 deletions
				
			
		
							
								
								
									
										29
									
								
								NOTICE-js
									
										
									
									
									
								
							
							
						
						
									
										29
									
								
								NOTICE-js
									
										
									
									
									
								
							|  | @ -12296,6 +12296,35 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | ||||
| 
 | ||||
| 
 | ||||
| ------ | ||||
| 
 | ||||
| ** object-hash; version 2.0.3 -- https://github.com/puleos/object-hash | ||||
| Copyright (c) 2014 object-hash contributors | ||||
| 
 | ||||
| The MIT License (MIT) | ||||
| 
 | ||||
| Copyright (c) 2014 object-hash contributors | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
| 
 | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ------ | ||||
| 
 | ||||
| ** v8-compile-cache; version 2.0.3 -- https://github.com/zertosh/v8-compile-cache#readme | ||||
|  |  | |||
|  | @ -1,7 +1,35 @@ | |||
| const { environment } = require('@rails/webpacker') | ||||
| const { environment, config } = require('@rails/webpacker') | ||||
| const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin"); | ||||
| const webpack = require('webpack'); | ||||
| const path = require("path"); | ||||
| const erb = require('./loaders/erb') | ||||
| const fs = require('fs') | ||||
| const hash = require('object-hash') | ||||
| 
 | ||||
| function getTerser() { | ||||
|   if(environment.config &&  | ||||
|     environment.config.optimization &&  | ||||
|     environment.config.optimization.minimizer &&  | ||||
|     environment.config.optimization.minimizer instanceof Array && | ||||
|     environment.config.optimization.minimizer.length === 1) | ||||
|     return environment.config.optimization.minimizer[0] | ||||
|   else  | ||||
|     return null; | ||||
| } | ||||
| 
 | ||||
| function outputLicenseFile(file, outputDir) { | ||||
| 	const contents = fs.readFileSync(file); | ||||
| 	const name =  path.basename(file) + "-" + hash(contents) + ".txt"; | ||||
| 	if (!fs.existsSync(outputDir)) { | ||||
| 		fs.mkdirSync(outputDir, {recursive: true}); | ||||
| 	} | ||||
| 	fs.copyFileSync(file, path.join(outputDir, name)); | ||||
| 
 | ||||
| 	return name; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| environment.loaders.prepend('erb', erb) | ||||
| environment.plugins.append( | ||||
|  | @ -13,4 +41,21 @@ environment.plugins.append( | |||
|     async: false, | ||||
|   }) | ||||
| ); | ||||
| 
 | ||||
| environment.plugins.prepend("BannerPlugin", new webpack.BannerPlugin( | ||||
|   {banner: `@hlicense License information is available at ${config.publicPath}${outputLicenseFile('NOTICE-js', config.outputPath)}`, | ||||
| entryOnly: false})) | ||||
| 
 | ||||
| 
 | ||||
| const terser = getTerser() | ||||
| if (terser) { | ||||
|   terser.options.terserOptions = terser.options.terserOptions || {} | ||||
|   terser.options.terserOptions.output = terser.options.terserOptions.output || {}  | ||||
|   terser.options.terserOptions.output.comments = /@hlicense/i | ||||
| 
 | ||||
|   // we don't want terser to print out license headers, we'll handle that ourselves
 | ||||
|   terser.options.extractComments = false; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| module.exports = environment | ||||
|  |  | |||
|  | @ -1,7 +1,5 @@ | |||
| process.env.NODE_ENV = process.env.NODE_ENV || 'production' | ||||
| 
 | ||||
| const environment = require('./environment') | ||||
| const modifyTerserPlugin = require('./plugins/modifyTerserPlugin'); | ||||
| environment.splitChunks((config) => { | ||||
|     const excludeDonateButtonFromSplit = { | ||||
|         optimization: | ||||
|  | @ -21,7 +19,6 @@ environment.splitChunks((config) => { | |||
|     return Object.assign({}, config, excludeDonateButtonFromSplit) | ||||
| }) | ||||
| 
 | ||||
| // we don't want terser to print out license headers, we'll handle that ourselves
 | ||||
| environment.config.optimization.minimizer[0].options.extractComments = false; | ||||
| 
 | ||||
| 
 | ||||
| module.exports = environment.toWebpackConfig() | ||||
|  |  | |||
|  | @ -72,6 +72,7 @@ | |||
|     "jsdom": "^11.10.0", | ||||
|     "mini-css-extract-plugin": "^0.9.0", | ||||
|     "node-sass": "^4.12.0", | ||||
|     "object-hash": "^2.0.3", | ||||
|     "phantomjs-prebuilt": "^2.1.16", | ||||
|     "react-test-renderer": "^16.13.1", | ||||
|     "resolve-url-loader": "^2.3.0", | ||||
|  |  | |||
|  | @ -11145,6 +11145,11 @@ object-copy@^0.1.0: | |||
|     define-property "^0.2.5" | ||||
|     kind-of "^3.0.3" | ||||
| 
 | ||||
| object-hash@^2.0.3: | ||||
|   version "2.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" | ||||
|   integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== | ||||
| 
 | ||||
| object-inspect@^1.7.0: | ||||
|   version "1.8.0" | ||||
|   resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Eric Schultz
						Eric Schultz