快速入门第一个脚手架

一、创建一个文件夹

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: 将当前项目中的库文件依赖移除
相关推荐
阿珊和她的猫2 小时前
v-scale-scree: 根据屏幕尺寸缩放内容
开发语言·前端·javascript
加班是不可能的,除非双倍日工资6 小时前
css预编译器实现星空背景图
前端·css·vue3
wyiyiyi7 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
gnip7 小时前
vite和webpack打包结构控制
前端·javascript
excel8 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端
阿华的代码王国8 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼8 小时前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jimmy8 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
ZXT8 小时前
promise & async await总结
前端
Jerry说前后端8 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化