欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

自定义npm工具库

程序员文章站 2022-04-21 10:34:26
新建项目(任意磁盘的任意路径下都可以)初始化项目npm init -y{ "name": "tanrj-cli", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "licens...

新建项目(任意磁盘的任意路径下都可以)

初始化项目npm init -y

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

新建index.js文件作为入口并在文件的第一行添加 #!/usr/bin/env node

package.json文件添加属性bin,也可以设置作者和添加搜索关键词

{
  "name": "tanrj-cli",
  "version": "1.0.1",
  "description": "",
  "main": "index.js",
  "bin": {
    "tanrj-cli": "./index.js"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "trj",
    "tanrj",
    "tanrj-cli",
    "fuierwer"
  ],
  "author": "tanrj",
  "license": "ISC"
}

打开终端定位到项目路径下,输入npm linknode会在全局下创建(C:\Users\Administrator\AppData\Roaming\node_global)

自定义npm工具库
自定义npm工具库

注意:执行完npm link之后,再次执行npm link会报错,这时我们可以执行npm link -f覆盖

定义一个方法用于文件拷贝(copy.js)

const fs = require('fs')
module.exports = function (src, dist, callback) {
  fs.readFile(src, (err, data) => {
    if (err) {
      return callback(err)
    }
    fs.writeFile(dist, data, err => {
      return callback(err)
    })
    callback(null)
  })
}

在index.js中加载copy.js方法

#!/user/bin/env node

const copy = require('./copy')

const argvs = process.argv().slice(2)

copy(argvs[0], argvs[1], err => {
  if (err) {
    console.log('复制文件失败了')
  } else {
    console.log('复制文件成功')
  }
})
console.log('copy()复制被执行了')

测试

自定义npm工具库

将项目发布到npm

  • 首先验证一下package.json中的name是否被占用
  • 去npm.js.com或者通过npm adduser注册一个账户

npm login
自定义npm工具库

查询镜像源

npm get registry

设置回默认的官方镜像(值为http://registry.npmjs.org/的省略)

npm config set registry https://registry.npmjs.org/

发布 npm publish

强制删除 npm unpublish --force

本文地址:https://blog.csdn.net/weixin_45585996/article/details/108217252

相关标签: JS JavaScript