你对npm init的了解可能还不够深入吧?

1,165 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情

1、前言

之前写过一篇关于如何发布一个npm包到npmjs,有兴趣的可以看一下这篇文章 juejin.cn/post/712782…

主要代码如下所示

// package.json中的bin路径脚本
  "bin": {
    "create-ak-vue": "./bin/vue.js",
    "create-ak-vite": "./bin/vite.js"
  },

然后bin文件夹下两个文件的代码分别为

// vite.js
#! /usr/bin/env node
console.log('vite.1js')
console.log('vite.2js')

// vue.js
#! /usr/bin/env node
console.log('vue.js')
console.log('vue.js')

大致的代码就是这样了,现在假设一下,我们的代码已经发布出去了,那么开始安装

// 全局安装aehyok-cli
npm i aehyok-cli -g

// 然后执行
create-ak-vue 
create-ak-vite

// 或者下面两个
npm create ak-vue
npm create ak-vite

// 再或者下面两个
npm init ak-vue
npm init ak-vite

执行效果如下

6.gif

可以发现这三种情况实现了同样的功能

2、npm init、npm create

印象里面大家可能对它的记忆可能都停留在,npm init之后是快速的初始化package.json,并通过交互式的命令行让我们输入需要的字段值,当然如果想直接使用默认值,也可以使用npm init -y快速生成一个简单默认的package.json。

create-app-react创建项目命令,官网链接可以直接查看 create-react-app.dev/docs/gettin…

//官网的三种命令
npx create-react-app my-app
npm init react-app my-app
yarn create react-app my-app

//我又发现npm create也是可以的
npm create react-app my-app

上述这些命令最终效果都是可以执行创建项目的

同样的vite创建项目的命令

//官网的命令
npm create vite@latest
yarn create vite
pnpm create vite

// 指定具体模板的
// npm 6.x 
npm create vite@latest my-vue-app --template vue 
//npm 7+, extra double-dash is needed: 
npm create vite@latest my-vue-app -- --template vue

yarn create vite my-vue-app --template vue

pnpm create vite my-vue-app --template vue

可以发现vite官网没有使用npx命令,不过我在我自己电脑上尝试了另外几个命令确实也是可以的

npx create-vite my-app
npm init vite my-app

image.png

通过上面的对比可以一个小问题,yarn create去官网查了是存在这个指令的,官网地址可看 classic.yarnpkg.com/en/docs/cli…

而对于npm create这个命令在npm官网是看不到的,但是在一篇博客中发现了更新日志

image.png

意思就是说npm create xxxnpm init xxx 以及yarn create xxx效果是一致的。那么我们来本文的命令行

// 我们是通过npm安装的,并且包名里是包含create的
npm i create-vite-pretty-lint

// 那么以下几种方式都可以使用的
npm init vite-pretty-lint
npm create vite-pretty-lint
yarn create vite-pretty-lint
npx create-vite-pretty-lint

3、npx

假如我们只在项目中安装了vite,那么node_modules.bin文件夹下是会存在vite指令的

image.png

如果我们想在该项目下执行该命令第一种方式便是

image.png

第二种方式就是直接在package.json的scripts属性下

image.png

关于npx的详细说明可以看一下阮一峰大佬的精彩分享 www.ruanyifeng.com/blog/2019/0…

4、总结

其实前言中的执行命令还可以添加一个

npx create-ak-vue

所以最后其实可以有四种方式去执行package.json中bin命令,总共有四种执行方式,真的太可怕了。