npm create命令详解
1. 前言
今天使用npm create tauri-app
时候发现npm不是简单的创建一个nodejs工程, 其还做了很多特定于tauri相关的操作, 顿时感到这个命令不单纯, 这个命令可能还能干很多活, 迅速燃起了研究的兴趣, 于是写下了这篇文章.
2. npm create
npm create
实际上是npm init
的一个别名, npm init的语法如下:
1 |
|
所以回到我们前言中提到的npm create tauri-app
, 这里的tauri-app是一个initializer.
initializer是一个名为create-<initializer>的npm包,它将由npm-exec安装,然后执行包的main bin来创建或更新package.json并运行任何其他与初始化相关的操作。
init命令转换为相应的npm exec操作,如下所示:
1 |
|
注意: 1, 如果用户已经全局安装了create-<initializer>包,那么npm init将使用该包。如果希望npm使用最新版本或其他特定版本,则必须指定它
2, 如果不提供initializer 即npm init
, 那么init将回退到legacy模式, 它会问你一堆问题,然后为你写一个package.json。它将尝试根据现有字段、依赖项和所选选项进行合理的猜测。
3. 指定initializer版本
如果你想使用特定版本的initializer, 可以参考如下命令:
1 |
|
4. 传递参数
在使用initializer的过程中, 默认参数往往是不足够够的, 在交互模式下initializer可以通过提问的方式让用户输入参数.
在无人值守的的情况下, 或者我们需要改变initializer更多默认行为的时候, 则需要通过命令行的将参数提供给initializer, 因为这里的主命令是npm或者npm init, initializer只是其中一个子命令, 这时需要通过npm将参数传递给initializer, 其语法格式如下:
1 | npm init initializer -- --hello |
需要使用 --
分割 npm参数与init参数.
为了更好地说明如何转发选项,这里有一个更为深入的示例,显示了传递给npm-cli和initializer的参数,以下两个命令是等效的:
1 | npm init foo -y --registry=<url> -- --hello -a |
这里的-y --registry=<url>
为npm exc
的参数, 而--hello -a
为create-foo这个initializer的参数.
至此npm create的基本用法讲解完了, 更多用法可以参考npm init文档
5. 相关文章
本文原文位于鹏叔的技术博客 - npm create命令详解, 需要获得最近更新请访问原文. 更多nodejs相关文章请访问鹏叔的技术博客 - nodejs
6. 参考资料
npm create命令详解