我正在尝试运行Angular 2 seed application。不幸的是,npm install
将大量文件放入node_modules
,我认为我还必须与种子应用程序代码一起提供。
如果我只需要一些用于应用程序的工作,我不想要提供所有这些静态文件。有没有办法只服务我真正需要的那些?
我问的原因是因为Google App Engine开发环境(dev_appserver.py
)限制了它可以投放的文件数量,并且生产环境对可以上传的文件的总大小有限制。上传兆字节的不必要文件会很惭愧。
答案 0 :(得分:10)
在生产中使用lib的CDN版本,例如:
<script src="https://rawgithub.com/systemjs/systemjs/0.19.6/dist/system.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/angular2-polyfills.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/Rx.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/angular2.dev.js"></script>
不仅如此,它还可以帮助您节省操作库以及如何将库移动到可分发中的功能,但如果他们从之前访问过的网页下载了最终用户,他们也可以节省一些时间。
答案 1 :(得分:6)
这是由这个种子项目的gulp脚本处理的。
gulp任务将文件从node_modules
复制到dist/vendor
。
//copy dependencies to dist folder
gulp.task('copy:deps', function(){
return gulp.src([
'node_modules/angular2/bundles/angular2-polyfills.js',
'node_modules/angular2/bundles/angular2.dev.js',
'node_modules/angular2/bundles/http.js',
'node_modules/angular2/bundles/router.js',
'node_modules/rxjs/bundles/Rx.js',
'node_modules/systemjs/dist/system.js',
]).pipe(gulp.dest('dist/vendor'));
});
安装gulp之后,只需输入gulp
即可启动默认gulp任务,或运行npm start
来调用gulp clean && gulp
默认的gulp任务还会将所有其他.js,.html和.css文件复制到dist文件夹。 dist
文件夹将包含您必须部署的内容。
答案 2 :(得分:1)
您可以在应用的配置文件中使用the skip_files element来排除不需要的文件:
skip_files 元素指定应用程序中的哪些文件 目录不会上传到App Engine。值是a 正则表达式或正则表达式列表。任何文件名 匹配任何正则表达式从列表中省略 上传应用程序时要上传的文件。
注意覆盖该doc部分中的默认值。
注意:我不确定这对开发服务器端是否有帮助,因为在某些情况下它似乎忽略了该配置(但我似乎无法找到我的答案而没有#&# 39;在一个这样的案例中工作以获得细节。)
答案 3 :(得分:1)
当您运行npm start
时,您会收到一个dist
文件夹。此文件夹包含整个应用程序。因此,无需提供node_modules
。
答案 4 :(得分:0)
使用angular-cli命令构建。之后你会得到一个dist文件夹。
从您的应用程序的末尾使用该dist文件夹,并使用以下app.yaml启动并运行您的项目。
答案 5 :(得分:0)
使用Angular 2和angular-cli,它非常直接。你不需要任何gulp或自定义脚本。只需使用angular-cli ng build --prod
进行构建,它就可以很好地进行树木切割,缩小并生成非常小且最佳的束。我已经写了一个small post - 在Google AppEngine或Firebase上构建和部署Angular 2应用程序。