快速入门第一个脚手架

一、创建一个文件夹

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: 将当前项目中的库文件依赖移除
相关推荐
星空寻流年5 分钟前
CSS3(BFC)
前端·microsoft·css3
九月TTS6 分钟前
开源分享:TTS-Web-Vue系列:Vue3实现固定顶部与吸顶模式组件
前端·vue.js·开源
CodeCraft Studio26 分钟前
数据透视表控件DHTMLX Pivot v2.1发布,新增HTML 模板、增强样式等多个功能
前端·javascript·ui·甘特图
一把年纪学编程28 分钟前
【牛马技巧】word统计每一段的字数接近“字数统计”
前端·数据库·word
llc的足迹37 分钟前
el-menu 折叠后小箭头不会消失
前端·javascript·vue.js
九月TTS1 小时前
TTS-Web-Vue系列:移动端侧边栏与响应式布局深度优化
前端·javascript·vue.js
Johnstons1 小时前
AnaTraf:深度解析网络性能分析(NPM)
前端·网络·安全·web安全·npm·网络流量监控·网络流量分析
whatever who cares2 小时前
CSS3 伪元素(Pseudo-elements)大全
前端·css·css3
若愚67922 小时前
前端取经路——性能优化:唐僧的九道心经
前端·性能优化
Bl_a_ck2 小时前
开发环境(Development Environment)
开发语言·前端·javascript·typescript·ecmascript