国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從零開始寫一個npm包,一鍵生成react組件(偷懶==提高效率)

Labradors / 3187人閱讀

摘要:后言有了我們可以做很多很多的事情以后開發新模塊的時候就可以偷懶了純手打給個贊可好模版

前言

最近寫項目開發新模塊的時候,每次寫新模塊的時候需要創建一個組件的時候(包含組件css,index.js,組件js),就只能會拷貝其他組件修改名稱 ,但是寫了1-2個后發現效率太低了,而且極容易出錯,所以自己寫一個npm包來減少工作量,下面就一步一步來創建一個屬于自己的npm倉庫

首先第一步創建一個package.json文件,打開終端,輸入以下命令:

 npm init  

然后會依次提示項目名稱、版本、項目描述、入口文件...一直回車,直到出現Is this ok? (yes) ,然后輸入yes,創建一個package.json文件就完成了,接下來在根目錄創建一個index.js文件,文件內容為:

#!/usr/bin/env node   //告訴node使用終端運行
const fs = require("fs"); //文件系統
const program = require("commander"); //終端輸入處理框架
const package = require("./package.json"); //獲取版本信息
program.version(package.version, "-v,--version")
       .command("init ")
       .action(name=>{
           console.log(name)
       })
  program.parse(process.argv);

安裝commander:

cnpm i -d commander 

接下來我們就可以看看效果,安裝執行

node index.js -v 
輸出:1.0.0
node index.js init header
輸出:header
node index.js -h 
輸出: Usage: index [options] [command]

  Options:

    -v,--version  output the version number
    -h, --help    output usage information

  Commands:

    init 

代碼正常運行,接下來修改package.json里面bin,增加以下代碼:

  "bin": {
    "temp": "index.js" 
  },

到這里我們第一步就算完成了,怎么發布npm包呢?流程如下:

首先在[npm官網][1]中注冊賬號(如有忽略)

注冊完執行npm adduser 依次輸入帳號,密碼,郵箱,

npm version patch

npm publish就可以提交了

npm發布流程踩過的坑

使用npm提交,不要使用cnpm

每次修改都需要修改版本號npm version patch

項目名稱 npm倉庫是否有這個項目

發布成功后,我們全局安裝,剛剛我提交的項目名稱為template-react-cli,所以執行全局安裝,使用npm安裝,cnpm會有短暫延遲

npm i template-react-cli -g
temp -v    
輸出:1.0.0 
temp init footer 
輸出: footer

屬于我們的npm可以正常使用了,接下來豐富我們的npm包,先安裝依賴:

cnpm i -d download-git-repo handlebars inquirer log-symbols ora

安裝完成后,豐富我們的功能index.js文件如下:

#!/usr/bin/env node
const fs = require("fs");

const program = require("commander");
const download = require("download-git-repo"); //下載模版文件
const chalk = require("chalk");  //美化終端
const symbols = require("log-symbols"); //美化終端
const handlebars = require("handlebars"); //修改模版文件內容

const ora = require("ora"); //提示下載
var inquirer = require("inquirer");  //提示文本
const package = require("./../package.json"); //獲取版本信息
const re = new RegExp("^[a-zA-Z]+$"); //檢查文件名是否是英文,只支持英文

program
  .version(package.version, "-v,--version")
  .command("init ")
  .action(name => {
    if (!re.test(name)) { //檢查文件名是否是英文
      console.log(symbols.error, chalk.red("錯誤!請輸入英文名稱"));
      return 
    } 
    if (!fs.existsSync(name)) { //檢查項目中是否有該文件
      inquirer  
        .prompt([
          {
            type: "list",
            name: "type",
            message: "請選擇模版類型?",
            choices: [
              "react-component------ES6組件",
              "react-function------函數組件",
              "react-redux------ES6組件",
            ],
          },
        ]) 
        .then(answers => {
            //用戶選擇后回調
          console.log(symbols.success,chalk.green("開始創建..........,請稍候"));
          const spinner = ora("正在下載模板...");
          spinner.start();
          const type = getType(answers)
          download(`github:NewPrototype/template/#${type}`, name, err => {
            if (err) {
              spinner.fail();
            } else {
              spinner.succeed();
              var files = fs.readdirSync(name);
              for(let i=0;i {
                    if (err) {
                      console.log("---錯誤");
                    }
                    count++;
                    if (count+1 == files.length) { //排除index.js文件
                      console.log(symbols.success, chalk.green("模版創建成功"));
                    }
                  }
                );
              }
            }
          });
        });
    } else {
      console.log(symbols.error, chalk.red("有相同名稱模版"));
    }
  });

program.parse(process.argv);

const getType = (type) => {
  let str = "master";
  switch (type.type) {
    case "react-component------ES6組件":
      str = "component"
      break;
      case "react-function------函數組件":
      str = "master"
      break;
      case "react-redux------ES6組件":
      str = "redux"
      break;
    default:
      break;
  }
  return str
}

然后重新提交文件到npm倉庫,方法和上面發布流程一樣,發布完成后:

npm i template-react-cli -g
先檢查版本號
temp -v  
輸出:1.02
然后檢查功能:
temp init header 
輸出:? 請選擇模版類型? (Use arrow keys)
? react-component------ES6組件
  react-function------函數組件
  react-redux------ES6組件
選擇想要的選項,回車
輸出:? 開始創建..........,請稍候
? 正在下載模板...
等待下載完成
輸出:? 模版創建成功



可以看到當前目錄下面創建了一個header文件夾,里面包含js文件和stylcss文件,到這里整個流程就完成了,這里是下載了模版文件模版地址,大家也可以寫出符合自己風格的模版文件。

后言

有了node我們可以做很多很多的事情,以后開發新模塊的時候就可以偷懶了!純手打給個贊可好?

github

https://github.com/NewPrototy...

模版github

https://github.com/NewPrototy...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96793.html

相關文章

  • 從0開始使用webpack搭建react工作流

    摘要:另外一方面,即使不是想搭建自己的工作流,而是使用現成的腳手架,大家都會用。顯然,徹底掌握如何從零開始搭建一個能夠貼近實際項目的工作流,是一個想要滿足工作最基本要求的人必備的技能。 很多人想搭建一套屬于自己的前端工作流,最開始的時候我們的工作流萌芽是從寫一個項目的時候,拷貝以前寫過的一個項目文件夾改完直接使用開始的,后來使用了grunt和gulp,再到webpack,每一個前端人員想掌握...

    bingchen 評論0 收藏0
  • Vue.js最佳實踐(五招讓你成為Vue.js大師)

    摘要:但如果你想更加高效地使用來開發,成為大師,那下面我要傳授的這五招你一定得認真學習一下了。雖然損失了一丟丟性能,但避免了無限的。所以我們需要設置,這些默認行為將會被去掉以上兩點的優化才能成功。陸續可能還會更新一些別的招數,敬請期待。 本文面向對象是有一定Vue.js編程經驗的開發者。如果有人需要Vue.js入門系列的文章可以在評論區告訴我,有空就給你們寫。 對大部分人來說,掌握Vue.j...

    CocoaChina 評論0 收藏0
  • 從零開始搭建一個React項目

    摘要:優化代碼拆分從入口文件開始,遞歸地構建了整個應用的模塊依賴圖表,然后通常會將所有的模塊打包成一個。 如果你還不知道什么是React,請點擊這里github源碼 安裝Node.js 如果你還不知道什么是ECMAScript,請點擊這里 如果你還不知道什么是Node.js,請點擊這里 下載Node.js并安裝;接著打開windows命令行窗口分別輸入node -v及npm -v如下圖所示,...

    HollisChuang 評論0 收藏0
  • 通過create-react-app從零搭建react環境

    摘要:通過文件可以對圖標名稱等信息進行配置。注意,注冊的只在生產環境中生效,并且該功能只有在下才能有效果該文件是過濾文件配置該文件是描述文件定義了項目所需要的各種模塊,以及項目的配置信息比如名稱版本許可證等元數據。 一、 快速開始: 全局安裝腳手架: $ npm install -g create-react-app 通過腳手架搭建項目: $ create-react-app 開始項目: ...

    Cympros 評論0 收藏0
  • 通過create-react-app從零搭建react環境

    摘要:通過文件可以對圖標名稱等信息進行配置。注意,注冊的只在生產環境中生效,并且該功能只有在下才能有效果該文件是過濾文件配置該文件是描述文件定義了項目所需要的各種模塊,以及項目的配置信息比如名稱版本許可證等元數據。 一、 快速開始: 全局安裝腳手架: $ npm install -g create-react-app 通過腳手架搭建項目: $ create-react-app 開始項目: ...

    CoyPan 評論0 收藏0

發表評論

0條評論

Labradors

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<