前言
在现代新建一个 JS 相关的项目往往都是从 package.json
文件开始的,不过这个文件里需要的字段实在是太多了,正常人都记不住,所以 npm 官方提供了 npm init
命令帮助我们快速初始化 package.json
文件。执行之后会有一个交互式的命令行让你输入需要的字段值,当然如果你想直接使用默认值,也可以使用 npm init -y
来超速初始化。
npx
随着技术的快速发展,发现初始化 package.json
已经无法满足大家的需求了,越来越多的项目需要进行整个项目的初始化。脚手架工具应运而生,除了有通用的脚手架工具 yeoman, sao 之外,很多项目也会开发针对自己项目的脚手架工具,例如 vue-cli, create-react-app 以及专门用来初始化 ThinkJS 项目的脚手架工具 think-cli等。运行这些工具需要先使用 npm install -g
全局安装这些模块之后才能正常运行。每次都执行这两部操作那其实是有点麻烦的,所以 npm@5.2.0
提供了 npx
命令将安装运行两个步骤合二为一,直接执行 npx think-cli
会先安装 think-cli
模块然后执行 think-cli
命令,最终完成脚手架的启动。
npm init <initializer>
可能 npm 的维护者们都比较懒吧,他们发现这么执行还挺累的,所以在 npm@6.1.0
里增加了 npm init <initializer>
这种操作,简单来说就是你执行 npm init thinkjs
的话 npm 会补全模块名为 create-thinkjs
并执行 npx create-thinkjs
。
npm init thinkjs
# same as
npx create-thinkjs
npm init
和 npx
的执行基本是一致的,他们相对于直接执行全局命令来说比较大的优势就是能保证命令模块是最新版的,毕竟如果还要执行 npm update -g
的话又多了一部操作。
参考资料:《Create a project using the npm init initializer command》