新建项目(任意磁盘的任意路径下都可以)
初始化项目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 link
node会在全局下创建(C:\Users\Administrator\AppData\Roaming\node_global)
注意:执行完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
- 首先验证一下package.json中的name是否被占用
- 去npm.js.com或者通过npm adduser注册一个账户
npm login
查询镜像源
npm get registry
设置回默认的官方镜像(值为http://registry.npmjs.org/的省略)
npm config set registry https://registry.npmjs.org/