快速入门第一个脚手架

一、创建一个文件夹

bash 复制代码
mkdir hzz-test
cd hzz-test

二、初始化

csharp 复制代码
npm init -y

三、进入VsCode,配置package.json,添加bin属性,编写脚手架代码

css 复制代码
code .
  • 创建一个bin文件夹,在下面创建index.js文件
  • 在index.js文件中输入
javascript 复制代码
#!/usr/bin/env node

console.log('hello hzz')
  • 在package.json中配置
json 复制代码
"bin": {
    "hzz-test": "bin/index.js"
  },

四、将脚手架发布到npm

npm login需要在npmjs镜像下登录,如果在淘宝镜像下登录会报错

npm login
npm publish

发布成功后到npmjs.com中查看

五、回到终端安装脚手架

安装包:

css 复制代码
npm i -g hzz-test

运行包

hzz-test

注:这样拥有的是一个和本地版本一样的包,本地更新和终端运行的一样,如果需要一个远程版本的(即发布版本)需要在一个目录下没有hzz-test的文件下去重新安装hzz-test(npm i -g hzz-test),然后再运行hzz-test就可以得到一个和远程版本一样的了。

六、脚手架本地调试方法

方法1:在hzz-test上级全局安装脚手架,然后运行

css 复制代码
npm i -g hzz-test

hzz-test

方法2:移除安装的脚手架,然后在vscode脚手架项目中执行link命令去建立软链接

arduino 复制代码
npm remove -g hzz-test
bash 复制代码
npm link

七、分包(多个项目,在一个包中link另一个包)

再建一个文件夹,如hzz-test-lib

初始化:

bash 复制代码
cd hzz-test-lib

npm init -y

hzz-test-lib文件夹下新建lib文件夹,lib下新建index.js文件(源码):

javascript 复制代码
// lib/index.js 写一个sum方法
module.exports = {
    sum(a, b) {
        return a + b;
    }
}

在hzz-test中直接引用hzz-test-lib这个包:

  • 本地使用:
bash 复制代码
cd hzz-test-lib

npm link

cd ..

cd hzz-test

npm link hzz-test-lib

npm install -S hzz-test-lib(会失败,因为hzz-test-lib还没有发布,所以需要手动到package.json中添加)
swift 复制代码
// hzz-test/package.json

{
  "name": "hzz-test1",
  "version": "1.0.0",
  "description": "",
  "bin": {
    "hzz-test": "bin/index.js"
  },
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "hzz-test-lib": "^1.0.0"
  }
}

在hzz-test的bin/index.js中使用hzz-test-lib包

javascript 复制代码
#!/usr/bin/env node
const lib = require('hzz-test-lib')
console.log(lib, lib.sum(1, 2))
console.log('hello hzz 1111')

修改hzz-test-lib的入口文件:

因为hzz-test-lib下没有index.js文件,而是lib/index.js,所以main为lib/index.js

swift 复制代码
// hzz-test-lib/package.json

{
  "name": "hzz-test-lib",
  "version": "1.0.2",
  "description": "",
  "main": "lib/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

现在就可以运行了

bash 复制代码
cd hzz-test

node bin/index.js
  • hzz-test-lib发布上线后使用:
arduino 复制代码
// 上线

cd hzz-test-lib

npm publish

解除link链接后才能使用,否则会默认本地

vbnet 复制代码
cd hzz-test

npm link hzz-test-lib

npm unlink hzz-test-lib

npm remove -g hzz-test-lib

npm install -S hzz-test-lib // 此时hzz-test目录下会有一个node_modules文件夹,里面有一个hzz-test-lib文件夹

node bin/index.js

总结:

  • 链接本地脚手架
bash 复制代码
cd your-cli-dir
npm link
  • 链接本地库文件
bash 复制代码
cd your-lib-dir
npm link
cd your-cli-dir
npm link your-lib
  • 取消链接本地库文件
bash 复制代码
cd your-lib-dir
npm unlink
cd your-cli-dir

// link存在
npm unlink your-lib

// link不存在
rm -rf node_modules
npm install -S your-lib

理解npm link:

  • npm link your-lib: 将当前项目中node_modules下指定的库文件链接到node全局node_modules下的库文件
  • npm link: 将当前项目链接到node全局node_modules中作为一个库文件,并解析bin配置创建可执行文件

理解npm unlink:

  • npm unlink: 将当前项目从node全局node_modules中移除
  • npm unlink your-lib: 将当前项目中的库文件依赖移除
相关推荐
熊的猫36 分钟前
JS 中的类型 & 类型判断 & 类型转换
前端·javascript·vue.js·chrome·react.js·前端框架·node.js
瑶琴AI前端1 小时前
uniapp组件实现省市区三级联动选择
java·前端·uni-app
会发光的猪。1 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
我要洋人死2 小时前
导航栏及下拉菜单的实现
前端·css·css3
科技探秘人2 小时前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人2 小时前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR3 小时前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香3 小时前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
q2498596933 小时前
前端预览word、excel、ppt
前端·word·excel
小华同学ai3 小时前
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
前端·钉钉·飞书