从头到尾硬干一个网站是非常费功费时的事情,为了节省开发时间就会尽量引用现成的套件,随着引用的套件越来越多,就会需要管理这些套件的种类、版本,接着就来学习套件管理工具的使用。
过去 JavaScript 大多只用在前端,Node.js 出现後跨足到了後端领域,NPM(Node Package Manager) 是包含在 Node.js 内的套件管理工具,虽然前端工程师在学习初期不会接触到後端服务器的架设,但 NPM 是无论前後端都会学习、使用到的重要工具。
Yarn 也是一个套件管理工具,在安装速度、安全性及稳定性相对 NPM 都较好,操作指令也大致相同,在团队开发时可以确认使用的管理工具,不宜将 NPM 和 Yarn 混用,可能会有些设定上的问题。
到官方网站下载 Node.js 安装档(建议选左边的 LTS 稳定支援版本)
NPM 在 Node.js内,无需另外安装,我们可以使用 npm 指令下载 yarn
$ npm install --g yarn
// Node.js
$ node -v
// NPM
$ npm -v
// Yarn
$ yarn -v
本篇文章撰写时使用的套件版本
因为这次文章不会练习到服务器功能,这边只简单介绍
$ node
$ console.log('Hello, world!')
$ .help
$ .exit
新增一个专案资料夹
使用 VS Code 开启专案资料夹
切换到终端机介面(ctrl +
`)
初始化
输入指令後,会依序询问『专案名称、版本、描述、进入点、测试指令、Git储存库、关键字、作者、授权方式』,不知道要打什麽的时候就一路 Enter 到底就好,会套用预设值(写在小括弧内)。
$ npm init
// 跳过环境设定,直接用预设值建立。
$ npm init -y
大部分的套件安装只要输入指令 npm install 套件名称
或是简写 npm i 套件名称
即可:
// Bootstrap
$ npm install bootstrap
// Font Awesome
$ npm i fontawesome
// MacOS 如果遇到权限不足的错误,在指令前方加上 sudo,并且提供使用者帐号密码
$ sudo npm install 套件名称
移除套件指令是npm uninstall 套件名称
或是简写 npm r 套件名称
,r 在此为 remove 的缩写。
装完管理工具和套件後,专案资料夹会多了一些档案,功用分别如下:
npm install(i)
指令,就会自动安装成相同的开发环境了。^
符号,表示如有更新的版本就会下载最新的。npm i
指令时可能会有部分的套件下载到更新的版本,如果希望团队的套件版本一致,就可以把这个 package-lock.json 也提供给其他成员,里面会指定下载的版本;反之,如果希望团队成员都使用最新版本,就不需要提供这个档案套件安装在全域环境中,就不需在个别专案重复安装。
全域安装通常用在仅个人使用的本地套件,例如:安装本地的套件管理工具 Yarn。
$ npm install -g 套件名称
有些套件是上线时会使用(例如:jQuery, Bootstrap...),有些是仅在开发中使用(例如:Webpack, 各种预处理器...),开发用的套件并不需要上线部署,所以我们可以把它分成开发、上线两类存放。
--save
这个参数,在 npm5 版本以後这已经是预设值,不需要另外撰写。npm install -dev 套件名称
或是简写成 npm i -D 套件名称
(注意,D需要是大写)。在完成了基本的练习後,也可以试着使用 Yarn 从头做一次
NPM | Yarn | 说明 |
---|---|---|
npm install | yarn install | 安装所有 dependencies 内的套件 |
npm install 套件名称 | yarn add 套件名称 | 安装指定套件(上线版) |
npm install -D 套件名称 | yarn add -D 套件名称 | 安装指定套件(开发版) |
npm install —g 套件名称 | yarn global add 套件名称 | 全域安装指定套件 |
npm uninstall 套件名称 | yarn remove 套件名称 | 移除指定套件 |
npm update | yarn upgrade | 更新所有 dependencies 内的套件 |
npm update 套件名称 | yarn upgrade 套件名称 | 更新指定套件 |
详细指令比较参考网站
(Cheat Sheet: npm vs Yarn Commands)[https://www.digitalocean.com/community/tutorials/nodejs-npm-yarn-cheatsheet]
如果有错误,欢迎留言指教~ Q_Q 上篇 Day 16 - 用 useReducer 取代 Red...
昨天在练习scanf时,题目规定说输入为字串,一开始都是以%d,做为字串的格式,但在printf时发...
缘由: 若客户端使用者不只单一国家,就会需要有变更app语言的功能, 之前查了一些资讯都是需要退出後...
前言 这是一个非常好用的前端框架,让我们不用再辛苦写 CSS,也能轻松达成RWD Bootstrap...
不可靠的时钟 (Unreliable Clocks) 时钟对应用程序来说很重要,它可以回答以下问题:...