通过npm自定义命令行工具来创建带模板格式的文件

新建一个文件夹,命名为:new-file2

1
mkdir new-file2

新建一个JS文件,命令为:new-file2.js

      编辑如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env node
const { sep, join, dirname } = require('path');
const { readFile, writeFile } = require('fs');


//获取文件命令(带后缀)
let fileNameAndExt = process.argv.splice(2)[0];
//获取执行命令的路径(即新创建文件的路径)
let fileDir = process.cwd()+ sep;
//如果参数不为空
if(fileNameAndExt && fileDir){
let fileName = (fileNameAndExt.split('.'))[0]
if(fileName){
let date = new Date();
//获取当前时间 24小时制
let datetime = date.toLocaleString('chinese',{ hour12: false });
console.log(fileNameAndExt+' 已生成...')
//设置模板
defaults = {
normal: [
'---',
'title: '+ fileName ,
'date: '+ datetime ,
'tags:',
'categories:',
'---'
].join('\n')
};

//写模板
writeFile(fileNameAndExt, defaults.normal,(error) => {

// In case of a error throw err exception.
if (error) throw err; });
}
}

在new-file2路径下初始化

1
npm init

      然后根据提示设置,完成该步操作后将为生成一个package.json,我们需要在里面添加命令,如下:

1
2
3
4
5
{
"bin": {
"new": "new-file2.js"
}
}

      完整版如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"name": "new-file2",
"version": "2.0.0",
"description": "new XXX.xx",
"main": "new-file2.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"bin": {
"new": "new-file2.js"
}
}

建立软链接,还是在new-file2路径下

1
npm link

      该操作后,会在全局的npm包环境中帮我们建立一个软链,可以通下面的命令查询:

1
npm get prefix

如果要去除这个软链,执行下面的命令

1
npm unlink new

new-file2离线包

------ 本文结束------