npm init:基本使用与附加选项介绍

前言

npm init 还是挺神奇的,原本我以为它只是用来初始化一个 package.json 文件,没想到它还能用来初始化一个项目

比如,我常用这个指令的 2 个变体:

  1. npm init --yes: 在当前目录创建一个默认 package.json 文件(无提问)
  2. npm create vite@latest my-vue-app -- --template react-ts: 创建一个基于 Vite 的 React 项目。npm createnpm init 的一个别名

第一个比较好懂,--yes(或 -y) 是 init 指令的选项参数,指定以无提问方式创建 package.json 文件。

第二个命令,create 后面跟的 vite,叫 initializer(@latest 表示使用最新版本),对应 create-vite 的 npm 包,执行这个包下的 index.js 文件,是一个 shell 脚本(#!/usr/bin/env node),目的是为了将一份模板项目复制到当前目录中。

当然,这只是肤浅的理解。阅读官方文档,可以系统全面的了解 npm init 命令的使用。

基础使用

npm init <initializer>

alias: create, innit

npm init 有两个别名:npm createnpm innit

其中,initializer 是可选参数。如何忽略 initializer 参数,init 指令是用来创建 package.json 文件的。默认情况下会问你一些列问题,以便为包提供必要的信息。可以通过 -y/–yes 选项忽略问题,全部采用默认值;如果应用 initializer 参数,内部会使用 npm-exec 执行名为 create-<initializer> 的包来创建项目。

以下是 npm init 指令的示例:

# create a scoped package using current directory name.
npm init --yes
# If you pass --scope, it will create a scoped package using current directory name.
npm init --scope=@foo --yes

以下是 npm init指令转换成对应 npm exec 命令的示例:

npm init foo -> npm exec create-foo
npm init @usr/foo -> npm exec @usr/create-foo

如果你本地已经安装了某个版本的 create-foo 包,那么 npm init foo 命令默认就会使用它。如果你希望强制使用 create-foo 的最新版本或指定版本的包,那么可以使用 @latest 或 @x.x.x 的 tag。

npm init foo@latest # fetches and runs the latest create-foo from the registry
npm init foo@1.2.3 # runs create-foo@1.2.3 specifically

附加选项

npm 从 v7 之后,增加了一个特殊的双连字符(--)支持。

下面是前后对照的案例:

# npm 7+, extra double-dash is needed:
npm create vite@latest my-vue-app -- --template ve

# npm 6-
npm create vite@latest my-vue-app --template vue

上面两个命令作用是一样的,等价于下面的命令:

npm exec -- create-vite@latest my-vue-app --template vue

可以看见,在 npm v6 之前,my-vue-app --template vue 都是作为执行 create-foo 的参数。npm v7 之后, 要使用 -- 分隔符,区分是给 create-foo 的选项还是给 npm create 的选项。

这里有一个更详细的示例,显示选项参数的传递规则——是给 npm cli 还是 create-的。以下两个命令是等效的:

npm create vite@latest my-app -y --registry=<url> -- --hello -a
npm exec -y --registry=<url> -- create-vite@latest my-app --hello -a

可以发现,-- 之前的选项都是给 npm create 的,-- 之后的选项都是给 create-vite 的。

还要特别注意的是,在 create-vite@latest 之后、-- 之前,所有不以 - 作前缀的选项,还是作为 create-vite 选项被应用。


原文始发于微信公众号(写代码的宝哥):npm init:基本使用与附加选项介绍

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/243681.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!