用Node寫一條配置環境的指令

前端掃地增發表於2019-11-13

前言

      工作中需要維護一個極老的專案,說來話長。在平時當需要往專案裡新增新的模組時,我需要手動新增的東西太多了。由此希望通過編寫一條node命令,可以讓我一鍵完成配置我需要配置的東西,比如:路由,控制器,less檔案等。最後我只需要在生成的模板index.jsx中寫我們可愛的模組程式碼就行了。

用Node寫一條配置環境的指令

如何建立Node命令?

$ mkdir my-plugin
$ cd my-plugin
$ npm init --yes複製程式碼

配置package的指令碼命令

{  "name": "12",  "version": "1.0.0",  "description": "",  "main": "index.js",  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1"  },  "keywords": [],  "author": "",  "license": "ISC",  "bin": {    "autocode": "bin/wflow.js"  },  "dependencies": {    "inquirer": "^7.0.0"  }}複製程式碼

建立指令碼js

#!/usr/bin/env node
console.log('hello word');複製程式碼

全域性安裝node命令

npm install . -g複製程式碼

用Node寫一條配置環境的指令

以上就是建立node指令的方法,下面介紹如何編寫生成程式碼指令碼。

inquirer的使用

列舉用到的屬性,更多用法請自行學習。

1.input

const promptList = [{
    type: 'input',
    message: '設定一個使用者名稱:',
    name: 'name',
    default: "test_user" // 預設值
},{
    type: 'input',
    message: '請輸入手機號:',
    name: 'phone',
    validate: function(val) {
        if(val.match(/\d{11}/g)) { // 校驗位數
            return val;
        }
        return "請輸入11位數字";
    }
}];

inquirer.prompt(promptList).then(answers => {});
複製程式碼

效果:

用Node寫一條配置環境的指令

2.list

const promptList = [  {    type: "list",    message: "作者帥嗎:",    name: "iscool",    choices: ['帥','一般帥'],  },  {  type: "list",  message: "帥得什麼級別:",  name: "client",  choices: ['吳彥祖','彭于晏'],  when:function(answers){    return answers.iscool === '帥'  },  filter: function(val) {  }},];
inquirer.prompt(promptList).then(answers => {});
複製程式碼

用Node寫一條配置環境的指令

when用於標記此條詢問何時出現!!!!

編寫指令碼新增模版

筆者要新增模版為以下:

用Node寫一條配置環境的指令

以在page資料夾下新增index.jsx和index.module.less為例子:

function action(module_name, module_title) {  
  let url = 'https://raw.githubusercontent.com/justworkhard/Daily-Blog/master/2019-11/12/file/temp.jsx'  fs.mkdir("app/page/" + module_name, () => {    fs.writeFileSync("app/page/" + module_name + "/index.module.less", "");    https.get(url,(res)=>{      res.setEncoding('utf8');        let rawData = '';        res.on('data', (chunk) => {        rawData += chunk;      });      res.on('end', () => {        fs.writeFileSync("app/page/" + module_name + "/index.jsx", rawData);      });    })  });
}複製程式碼

先是在page資料夾下面新增module的資料夾,使用http將線上的index.jsx模版拉下來放到建立的module資料夾下面。

結語

    總的來說,通過一條node指令完成了新建模組所需的配置並不一定能節省多少時間,但卻非常酷,不是嗎?


連結:https://github.com/justworkhard/autocode.git


相關文章