我清楚地记得,在我编码生涯的早期,我开始感觉到事情正在改变,不再是我所知道的,而是走向一套更复杂的工具和实践,以命令行和名为npm的东西为基础。
这是初学者指南的第一部分,我们涵盖了Node Package Manager,或称npm的广泛主题。当我们在命令行中输入这三个小字母--npm时,我们常常认为这是理所当然的,但npm是一个更大的生态系统的一部分,对于第一次进入这个系统的人来说,往往会感到恐惧或困惑。本指南将帮助你揭开这个生态系统的神秘面纱,并帮助你不仅了解npm是什么、做什么,而且最终能自如地使用它。
指南的各个章节
- 本指南到底是为谁准备的? (你在这里!)
- npm "到底是什么意思?
- 命令行是什么?
- Node是什么?
- 软件包管理器是什么?
- 如何安装npm?
- 如何安装npm包?
- npm命令到底是什么?
- 如何安装一个现有的npm项目?
现代"前端后端 "开发--npm是其中的一部分--看起来很复杂,因为它是许多相互关联的工具的一个名字。当你再加上前端世界的发展似乎比实际情况要快得多,产生了一种感觉,即如果你不马上加入最新的东西,就会被甩在后面,关于它的一切都显得难以接近。
这就是为什么我们要制定这个指南--让你更容易在自己的工作中使用这项技术。
这本指南到底是为谁准备的?
在我自己的个人发展学习之旅中,我会读到让我兴奋的技术指南,然后读到 "只是npm install"这个或那个的部分,我又会失望地叹气,放弃使用那个看起来很酷的东西。或者,在更有冒险精神的日子里,我可能会复制命令,但最终不可避免地会进入我不理解的另一个步骤("只是,"他们总是说,"做[一些我不知道的事情]"),或者得到一个指南没有解释的错误信息,让我止步。
不管npm是什么--不管这些命令是做什么的,也不管你应该在哪里输入它们--从来没有人花时间向我解释过。而我越是读那些把这些知识视为理所当然的人写的指南,我就越是感到孤立无援。
如果这些听起来很熟悉:这个系列是为你准备的。
你很可能属于近年来被描述为"前端 "的群体。像我一样,当涉及到HTML和CSS时,你可能知道你的东西。也许你也知道一些JavaScript,要么是 "vanilla "JavaScript,要么是通过jQuery的方式。无论哪种方式都很好,对于本文的目的和一般来说都是如此。
也许你甚至尝试过像React或Vue这样的框架,但你大多只是复制和粘贴一些东西来让你的项目启动和运行,并不完全确定这些东西到底是做什么的。
- 如果你感觉到前端开发的传统定义和 "现代 "定义之间的巨大鸿沟--如果你担心如果不弥合这一鸿沟,你可能会损害你的职业生涯,那么这篇文章就是为你而写。
- 如果你不确定关于终端和命令行的所有大惊小怪是怎么回事,而且你更愿意根本不碰终端和命令行,那么这篇文章就适合你。
- 如果你想知道为什么其他开发者似乎喜欢把事情搞得那么复杂,以及所有这些命令行垃圾的意义何在,而你可以直接写简单的HTML、CSS和JavaScript,那么这篇文章就适合你。
- 如果你觉得自己被排除在外,这篇文章就是为你而写的。如果你觉得有一些事情,一些真正的大事情,从来没有人真正费心向你解释过,而且你担心你是唯一一个不明白的人。
知道这一点,我的前端开发伙伴:**你并不孤单。**你离它很远。你正是我不久前所在的地方,而那个地方的不平静的记忆仍在我脑海中浮现。
让我试着回答你可能有的问题--和我一样的问题--我希望在我还不知道如何提问的时候,有人能为我解答这些问题。
本指南所涵盖的内容
本指南是一个系列的文章。这并不是因为这些东西本身非常难以理解;而是因为它有很多部分,每一部分都需要单独解释。这是一个广泛的领域,有许多兔子洞需要探索。一次专注于一个坚实的步骤,使我们能够花时间使事情变得清晰和易懂。我们的目标不是要涵盖所有内容,但我确实想做得更彻底而不是快速。
我们将首先讨论目前的情况;npm是什么,关于它的来源,以及我们如何走到这一步。从这里开始,我们将介绍Node本身是什么,然后是一般的软件包管理器是什么,最后才是实际使用npm。最后,我们将安装Node和npm(如果它们还没有安装的话),初始化一个项目以了解它是如何工作的,最后,从GitHub上安装一个真实的npm项目及其所有的包和命令。
有些(或全部)内容现在听起来可能很吓人,但别担心。这就是为什么我们要花整个指南的篇幅在一起。
在我们开始之前需要知道什么
我将尽力假设你的情况尽可能少,除了你是一个通常知道如何用HTML和CSS建立一个网站的网络开发者。你不需要对JavaScript有太多的了解,也不需要为了学习本指南而写任何东西,但如果你至少对JavaScript是什么以及它是如何工作的有一个基本的了解,这肯定会有帮助。
JSON是唯一一个在开始之前可能有帮助的东西。如果你对JSON不熟悉,可能值得看一下这个JSON指南,或者至少在我们讲到这一部分时准备好。
除此之外,我可能会提到特定的工具、项目和框架,如Bootstrap、React、Vue和SvelteKit,但我不会假设你对它们有任何实践经验,也不会假设你以前使用过npm或命令行。