我正在探索AngularJS tutorial项目,发现它里面有node_modules
目录,如果是60兆字节,则大小。
简单的客户端javascript项目真的需要如此巨大的未知数据库吗?
我尝试删除此目录,项目仍然有效。我怀疑它与node.js
和npm
有某种关系,但是怎么样?假设我需要在一些传统的Web服务器(而不是node.js)上运行我的项目,那么如何知道哪些文件/目录是不需要的?
许多javascript库需要使用bower来安装它们。如果我使用凉亭,这是否意味着我需要保留node_modules
?
答案 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
文件夹包含仅与构建相关的依赖项。