快速入门第一个脚手架

一、创建一个文件夹

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: 将当前项目中的库文件依赖移除
相关推荐
汉得数字平台13 小时前
汉得H-AI飞码——前端编码助手V1.1.2正式发布:融业务知识,提开发效能
前端·人工智能·智能编码
前端小万13 小时前
Jenkins 打包崩了?罪魁是 package.json 里的 ^
前端·jenkins
编程小白gogogo13 小时前
苍穹外卖前端环境搭建
前端
光影少年13 小时前
web端安全问题有哪些?
前端·安全
行走的陀螺仪14 小时前
Vite & Webpack 插件/Loader 封装完全指南
前端·webpack·node.js·vite·前端工程化·打包构建
1024肥宅14 小时前
浏览器网络请求 API:全面解析与高级封装(1)
前端·websocket·axios
小费的部落14 小时前
Excel 在Sheet3中 匹配Sheet1的A列和Sheet2的A列并处理空内容
java·前端·excel
霍格沃兹测试学院-小舟畅学14 小时前
Cypress 入门与优势分析:前端自动化测试的新利器
前端
1024肥宅14 小时前
浏览器网络请求 API:全面解析与高级封装(2)
前端·websocket·axios
幼儿园技术家14 小时前
深入理解 CSR / SSR / SSG:前端三种渲染模式的本质与选型
前端