I am trying to run the Angular 2 seed application. Unfortunately npm install
places a massive numbers of files into node_modules
which I presume I also have to serve alongside the seed application code.
I don't want to have to serve all these static files if I only need a few for the app to work. Is there a way to only server which ones I actually need?
The reason I ask is because the Google App Engine development environment (dev_appserver.py
) places a limit on the number of files it can serve and the production environment has a limit on the combined size of files that can be uploaded. It would be ashamed to upload megabytes of unnecessary files.
With Angular 2 and angular-cli, it's pretty straight forward. You dont need any gulp or custom script. Just build with angular-cli
ng build --prod
and it does nice job of treeshaking, minifying and producing a very small and optimum bundle. I've written a small post on this - to build and deploy Angular 2 app on Google AppEngine or Firebase.This is handled by the gulp script of this seed project.
https://github.com/angular/angular2-seed/blob/e66d24fd34d37884cec41a3583bad563cf5a43e5/gulpfile.js#L15
The gulp task copies the files from
node_modules
todist/vendor
.After installing gulp, just type
gulp
to start the default gulp task or runnpm start
which will callgulp clean && gulp
The default gulp task will also copy all other .js, .html and .css files to the dist folder. The
dist
folder wil contain everthing you have to deploy.You can use the skip_files element in the app's config file to exclude the undesired files:
Pay attention at overriding the defaults in that doc section.
Note: I'm not exactly sure if this would help on the development server side, tho - it seems to ignore that config in some cases (but I can't seem to find my answer which didn't work in one such case to get the details).
Use the CDN version of the libs in production, like :
Not only that will save you the hastle to handle what and how to move libs into your distributable, but they'll also save the end user some time if they have downloaded them from a previous visited webpage.
Use angular-cli command ng build. You will get a dist folder after that.
Use that dist folder as from end for your application and use the following app.yaml to get your project up and running.
https://gist.githubusercontent.com/darktable/873098/raw/0197279f7faf07a3f64689589f097790d198b22a/app.yaml
When you run
npm start
you get adist
folder. This folder contains your whole application. So no need to servenode_modules
.