什么是AngularJS中的node_modules目录?

时间:2015-12-30 09:41:14

标签: javascript angularjs node.js npm bower

我正在探索AngularJS tutorial项目,发现它里面有node_modules目录,如果是60兆字节,则大小。

简单的客户端javascript项目真的需要如此巨大的未知数据库吗?

我尝试删除此目录,项目仍然有效。我怀疑它与node.jsnpm有某种关系,但是怎么样?假设我需要在一些传统的Web服务器(而不是node.js)上运行我的项目,那么如何知道哪些文件/目录是不需要的?

许多javascript库需要使用bower来安装它们。如果我使用凉亭,这是否意味着我需要保留node_modules

2 个答案:

答案 0 :(得分:22)

node_modules目录仅适用于构建工具

应用根目录中的package.json文件定义了node_modules运行npm install时将{...}}安装的库。

通常使用角度应用程序,在您的开发机器或构建服务器上,您使用来自npm(node.js包管理器)的其他Javascript库来构建您的角度应用程序。任务可以使用CSS预处理器(如LESS或SASS),缩小,替换值等来连接资源。管理和运行这些任务的最常用工具称为 grunt gulp < / em>,也是通过npm安装的。

部署应用时,您只分发生成的版本,而不是任何源文件或构建工具。

当然可以在不构建任何内容的情况下编写AngularJS应用程序。

从评论中进行编辑:当您深入了解Angular时,即使在客户端应用程序中,也有更多使用npm安装库的高级技术,然后您可以选择性地选择所需的库,而不是整个50MB +。我建议保留基本方法,直到你掌握它们为止。

答案 1 :(得分:2)

NPM是节点包管理器,它将包本地安装到项目中,特别是安装到node_modules文件夹中。从那里包裹代码可以包含在项目中,是的,可以是那里的重要词。

浏览器无法在代码中包含模块(因此),因此您需要使用可以公开节点的commonJS样式模块的库。 Browserify和Webpack是两种流行的方法。

Angular通过引入自己的模块系统使其复杂化,模块系统更类似于AMD风格的模块。有很多方法,所以你可以使用节点式模块,也许你的项目使用那些。

使用npm来管理依赖项是一个好主意,它是一个出色的包管理器。在您的情况下,可能只是使用node构建项目,node_modules文件夹包含仅与构建相关的依赖项。