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:
Igor Minar 2016-06-02 16:47:23 -07:00
parent d18694a1c3
commit cea103a7ff
3 changed files with 72 additions and 0 deletions

View 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`

View 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
View 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