test: add tree-shaking test
currently this doesn't throw or break the build, first we need to resolve all of the existing issues. to run execute: ./tools/tree-shaking-test/test.sh then inspect dist/tree-shaking/test/**/*.bundle.js
This commit is contained in:
		
							parent
							
								
									d18694a1c3
								
							
						
					
					
						commit
						cea103a7ff
					
				
							
								
								
									
										17
									
								
								tools/tree-shaking-test/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								tools/tree-shaking-test/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					Rollup tree-shaking test
 | 
				
			||||||
 | 
					------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The purpose of this test is to verify how much stuff can be tree-shaken from our packages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The test generates an empty js file that imports everything from a particular package but doesn't
 | 
				
			||||||
 | 
					use any of the imported references.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In the ideal scenario Rollup should detect that none of the references are being used and should
 | 
				
			||||||
 | 
					create an empty bundle file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In reality there is a lot of stuff preserved in the bundle because Rollup is currently not able to
 | 
				
			||||||
 | 
					make a safe decision to remove many of the unused symbols.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To run execute: `./tools/tree-shaking-test/test.sh`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					then inspect `dist/tree-shaking/test/**/*.bundle.js`
 | 
				
			||||||
							
								
								
									
										20
									
								
								tools/tree-shaking-test/rollup.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								tools/tree-shaking-test/rollup.config.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					class RollupNG2 {
 | 
				
			||||||
 | 
					  resolveId(id, from){
 | 
				
			||||||
 | 
					    if(id.startsWith('@angular/')){
 | 
				
			||||||
 | 
					      return `${__dirname}/../../packages-dist/${id.split('/')[1]}/esm/index.js`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // if(id.startsWith('rxjs/')){
 | 
				
			||||||
 | 
					    //   return `${__dirname}/../../../node_modules/rxjs-es/${id.replace('rxjs/', '')}.js`;
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  entry: 'test.js',
 | 
				
			||||||
 | 
					  format: 'es6',
 | 
				
			||||||
 | 
					  plugins: [
 | 
				
			||||||
 | 
					    new RollupNG2(),
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										35
									
								
								tools/tree-shaking-test/test.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										35
									
								
								tools/tree-shaking-test/test.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -ex -o pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cd `dirname $0`
 | 
				
			||||||
 | 
					cd ../..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export NODE_PATH=${NODE_PATH}:$(pwd)/dist-packages/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DEST_DIR=./dist/trees-shaking-test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rm -rf ${DEST_DIR}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for PACKAGE in \
 | 
				
			||||||
 | 
					  core \
 | 
				
			||||||
 | 
					  compiler \
 | 
				
			||||||
 | 
					  common \
 | 
				
			||||||
 | 
					  platform-browser \
 | 
				
			||||||
 | 
					  platform-server \
 | 
				
			||||||
 | 
					  http \
 | 
				
			||||||
 | 
					  router \
 | 
				
			||||||
 | 
					  upgrade
 | 
				
			||||||
 | 
					do
 | 
				
			||||||
 | 
					  echo "=======    Tree-shaking TEST: ${SRCDIR} ====="
 | 
				
			||||||
 | 
					  TEST_DIR=${DEST_DIR}/${PACKAGE}
 | 
				
			||||||
 | 
					  TEST_ENTRY_POINT=${TEST_DIR}/test.js
 | 
				
			||||||
 | 
					  mkdir -p ${TEST_DIR}
 | 
				
			||||||
 | 
					  cp ./tools/tree-shaking-test/rollup.config.js ${TEST_DIR}/
 | 
				
			||||||
 | 
					  echo "import * as x from '@angular/${PACKAGE}'" > ${TEST_ENTRY_POINT}
 | 
				
			||||||
 | 
					  (
 | 
				
			||||||
 | 
					    cd ${TEST_DIR}
 | 
				
			||||||
 | 
					    $(npm bin)/rollup --config rollup.config.js --output ${PACKAGE}.bundle.js
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user