(我是Actionscript
开发人员,最终迁移到JavaScript
并正在学习TypeScript
和AngularJS 2
。如果这个问题过于愚蠢/天真,请告诉我。我会删除它)
我正在浏览Angular 2 tutorials并且一切都很好,但我想知道如何通常建立一个没有重复的开发环境,例如“node_modules”和“typings”目录。我知道教程本身要完整,所以有重复。我也明白了,例如,下面这一行是使用相对于项目文件夹的引用,所以它可以指向其他地方。
是否存在避免重复节点模块的“最佳实践”?我问,因为“node_modules”目录是145 mb。
import {Component} from 'angular2/core';
答案 0 :(得分:2)
node_modules
是设计的 - 拥有package.json
文件和相应的依赖文件夹的想法是为了让您的项目自给自足/隔离并且不依赖于它正在使用的环境。
那就是说,你可以使用npm install [package] -g
命令全局安装NPM模块,但是这里有一个实际的例子,为什么你不应该 - 说你有一个正在进行的项目,使用旧版本的Angular 2,并且您希望使用最新功能启动第二个项目。如果您正在使用全局Angular安装,则无法做到这一点;更新版本会为每个使用它的项目更新它(这可能会破坏你的旧应用程序)。如果每个项目都有单独的安装,则它们的版本可以不同而不会引起任何问题。
在将项目提交到版本控制时,这也很方便 - 如果您的整个应用程序依赖于全局安装的模块,并且您(或贡献者)想要在另一台机器上进行操作,则他们必须通过并安装每个单独的依赖项都是手动的,以便环境与最初开发的环境匹配。相比之下,将package.json
中列出的依赖项和您的node_modules
文件夹从repo中排除 - 它们只需运行{{ 1}}和NPM将为它们安装所有相关模块。
我承认npm install
的大小有时可能会过大,我希望他们能在某些时候对此进行优化 - 但我不认为这是一个很好的理由抛弃所有的好处,让它分开给你!