nodejsインタラクティブライブラリ--hash-sum,deepmergeとyaml-front-mater


nodejsインタラクティブライブラリシリーズ
ライブラリ
作用
chalk-pipe
よりシンプルなスタイルの文字列を使ってチョークスタイルのスキームを作成します.
chalk
ターミナル文字列スタイルを正しく処理します.
Commander.js
完全なnode.jsコマンドライン解決案
Inquirer.js
共通のインタラクティブコマンドのセットは、ユーザーインターフェースを行います.
slash
システムパスの処理
minimist
解析パラメータのオプション
dotensv
環境変数を.envファイルからprocess.envにロードします.
dotensv-expand
コンピュータ上にすでに存在している環境変数を拡張します.
sh-sum
非常に速いユニークなハッシュジェネレータ
deepmerge
2つ以上のオブジェクトのエニュメレート・プロパティーを深さに結合します.
yaml-front-mater
yamlまたはjsonを解析します
レスリング
nodeのrequire.resolve()アルゴリズムを実装すると、require.reolve()代表ファイルを非同期的に使用することができる.
semver
npmの意味バージョン
セブン
二つの文字列の違いを測定する最も早いJS実現の一つ.
ルcache
最近最も使用されているアイテムのキャッシュオブジェクトを削除します.
ポーターfinder
自動検索8000から65535までの利用可能なポート番号
ora
優雅なターミナルホイール
envinfo
障害除外ソフトウェア問題(オペレーティングシステム、バイナリバージョン、ブラウザ、インストール済み言語など)を生成する際に必要な汎用詳細情報の報告
memfs
メモリファイルシステムはNode's fs APIと同じように実現される.
execa
人間の流れに対して実行する.
webpack-merge
配列と結合オブジェクトを接続するために、新しいオブジェクトを作成します.
webpack-chain
連鎖APIを使用して、webpackバージョンの構成を簡略化する修正を生成する.
strip-ansi
文字列からANSI変換コードを削除します.
address
現在のマシンのIP,MAC,DNSサーバを取得します.
default-gateway
OSルーティングインターフェースのexec呼び出しで機器のデフォルトゲートウェイを取得します.
ジョン
JavaScriptの最も強力なパターン記述言語とデータ検証器.
fs-extra
オリジナルfsモジュールに含まれていないファイルシステム方法を追加し、fs方法にプロミサポートを追加しました.
Aコール
小型で高速なJavaScript解析器は、JavaScriptで完全に作成されています.
zlib.js
ZLIB.jsはZLIB(RFC 1950)、DEFLATE(RFC 1951)、GZIP(RFC 1952)、PKZIPはJavaScriptで実現される.
nodejsインタラクティブライブラリ--chalk-pipeとchalk
nodejsインタラクティブツールライブラリ--commanderとInquirer
nodejsインタラクティブライブラリ--slash,minimistとdotensv,dotensv-expand
nodejsインタラクティブライブラリ--hash-sum,deepmergeとyaml-front-mater
nodejsインタラクティブツールライブラリ--revoveとsemver
nodejsインタラクティブライブラリ--leven,lll cacheとportfinder
nodejsインタラクティブツールライブラリ--oraとenvinfo
nodejsインタラクティブライブラリ--memfsとexeca
nodejsインタラクティブライブラリ--webpack-mergeとwebpack-chain
nodejsインタラクティブライブラリ--strip-ansi,address,default-gatewayとji
nodejsインタラクティブライブラリ--fs-extra,Acornとzlib
sh-sum
非常に速いユニークなハッシュジェネレータ
install
yarn add hash-sum
使い方
const sum = require('hash-sum');

console.log(sum([ 0, 1, 2, 3 ])) // 00a34759
console.log(sum('1988-06-09T03:00:00.000Z')) // dff5ee3c
フィーチャー
  • 依存関係はありません.
  • の最小占有空間
  • はnodejsを支持して、io.js、ブラウザーの
  • およびブラウザのハッシュ関数は、ソースコード
  • に基づく.
  • は、異なるオブジェクトタイプのために異なるハッシュを生成し、
  • .
  • オブジェクト中の循環参照に対するサポート
  • 属性割り当て順序を無視しました.sum(value)ベースの4バイト16進数ハッシュvalueを生成する.
    # creates unique hashes
    00a34759 from: [ 0, 1, 2, 3 ]
    a8996f0c from: { '0': 0, '1': 1, '2': 2, '3': 3 }
    5b4c2116 from: { '0': 0, '1': 1, '2': 2, '3': 3, length: 4 }
    2c937c45 from: { url: 12 }
    31d55010 from: { headers: 12 }
    2d2e11bc from: { headers: 122 }
    ec99d958 from: { headers: '122' }
    18c00eee from: { headers: { accept: 'text/plain' } }
    6cb332c8 from: { payload: [ 0, 1, 2, 3 ], headers: [ { a: 'b' } ] }
    12ff55db from: { a: [Function: a] }
    46f806d2 from: { b: [Function: b] }
    0660d9c4 from: { b: [Function: b] }
    6c95fc65 from: function () {}
    2941766e from: function (a) {}
    294f8def from: function (b) {}
    2d9c0cb8 from: function (a) { return a;}
    ed5c63fc from: function (a) {return a;}
    bba68bf6 from: ''
    2d27667d from: 'null'
    774b96ed from: 'false'
    2d2a1684 from: 'true'
    8daa1a0c from: '0'
    8daa1a0a from: '1'
    e38f07cc from: 'void 0'
    6037ea1a from: 'undefined'
    9b7df12e from: null
    3c206f76 from: false
    01e34ba8 from: true
    8a8f9624 from: Infinity
    0315bf8f from: -Infinity
    64a48b16 from: NaN
    1a96284a from: 0
    1a96284b from: 1
    29172c1a from: undefined
    59322f29 from: {}
    095b3a22 from: { a: {}, b: {} }
    63be56dd from: { valueOf: [Function: valueOf] }
    63be4f5c from: { valueOf: [Function: valueOf] }
    5d844489 from: []
    ba0bfa14 from: 2019-06-28T21:24:31.215Z
    49324d16 from: 2019-06-28T03:00:00.000Z
    434c9188 from: 1988-06-09T03:00:00.000Z
    ce1b5e44 from: global
    参照
    基本的によく使われる方法シーンはこれだけです.もっと完全な使い方は直接文書を見ることができます.
    sh-sum
    deepmerge
    2つ以上のオブジェクトのエニュメレート・プロパティーを深さに結合します.
    UMDパッケージは723 Bミニifed+gzipppedです.
    Getting Startd
    Example Usage
    const x = {
      foo: { bar: 3 },
      array: [{
        does: 'work',
        too: [1, 2, 3]
      }]
    }
    
    const y = {
      foo: { baz: 4 },
      quux: 5,
      array: [{
        does: 'work',
        too: [4, 5, 6]
      }, {
        really: 'yes'
      }]
    }
    
    const output = {
      foo: {
        bar: 3,
        baz: 4
      },
      array: [{
        does: 'work',
        too: [1, 2, 3]
      }, {
        does: 'work',
        too: [4, 5, 6]
      }, {
        really: 'yes'
      }],
      quux: 5
    }
    Installation
    npmでこうします.
    npm install deepmerge
    deepmergeは、直接にブラウザで使用することができ、パケットマネージャ/バインディングを使用する必要がない:UMD version from unpkg.com.
    Include
    deepmergeはCommunJSの入口点を暴露しました.
    const merge = require('deepmerge')
    ESMエントリポイントはWebpack bug.
    APImerge(x, y, [options])2つのオブジェクトxとyを深さで結合し、xとyからの要素を含む新しい結合オブジェクトを返します.
    xとyが同じ要素である場合、yの値は結果に現れる.
    統合は新しいオブジェクトを作成しますので、xまたはyは変更されません.
    注意:デフォルトでは、配列は接続によって結合されます.merge.all(arrayOfObjects, [options])任意の数のオブジェクトを単一の結果オブジェクトに統合します.
    const foobar = { foo: { bar: 3 } }
    const foobaz = { foo: { baz: 4 } }
    const bar = { bar: 'yay!' }
    
    merge.all([ foobar, foobaz, bar ]) // => { foo: { bar: 3, baz: 4 }, bar: 'yay!' }
    OptionsarrayMergeいくつかの例では、2つの配列を結合する方法がありますが、ユーザー定義の関数を作成することもできます.arrayMergeの関数が呼び出されます.三つのパラメータがあります.ターゲット配列、ソース配列、オプションオブジェクトです.
  • isMergeableObject(value)
  • cloneUnlessOtherwiseSpecified(value, options)
  • arrayMerge例:ターゲット配列をカバーする
    既存の配列値を完全に上書きします.接続ではありません.
    const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray
    
    merge(
        [1, 2, 3],
        [3, 2, 1],
        { arrayMerge: overwriteMerge }
    ) // => [3, 2, 1]
    arrayMerge example:combine arrays
    2つの配列の同じ索引のオブジェクトを結合します.
    これはデフォルトの配列統合アルゴリズムpre-version-2..0です.
    const combineMerge = (target, source, options) => {
        const destination = target.slice()
    
        source.forEach((item, index) => {
            if (typeof destination[index] === 'undefined') {
                destination[index] = options.cloneUnlessOtherwiseSpecified(item, options)
            } else if (options.isMergeableObject(item)) {
                destination[index] = merge(target[index], item, options)
            } else if (target.indexOf(item) === -1) {
                destination.push(item)
            }
        })
        return destination
    }
    
    merge(
        [{ a: true }],
        [{ b: true }, 'ah yup'],
        { arrayMerge: combineMerge }
    ) // => [{ a: true, b: true }, 'ah yup']
    isMergeableObjectデフォルトでは、ほとんどのタイプのオブジェクトのすべての属性がdeepmergeクローンされます.
    オブジェクトが特別なタイプで、属性だけでなくオブジェクト全体をコピーしたい場合は、このようにしたくないかもしれません.
    この点はisMergeableObjectオプションの関数を伝達することによって達成できます.
    普通のオブジェクトの属性だけをクローンして、すべての「特殊」なタイプのインスタンスオブジェクトを無視したい場合、is-pline-objectを追加する必要があります.
    const isPlainObject = require('is-plain-object')
    
    function SuperSpecial() {
        this.special = 'oh yeah man totally'
    }
    
    const instantiatedSpecialObject = new SuperSpecial()
    
    const target = {
        someProperty: {
            cool: 'oh for sure'
        }
    }
    
    const source = {
        someProperty: instantiatedSpecialObject
    }
    
    const defaultOutput = merge(target, source)
    
    defaultOutput.someProperty.cool // => 'oh for sure'
    defaultOutput.someProperty.special // => 'oh yeah man totally'
    defaultOutput.someProperty instanceof SuperSpecial // => false
    
    const customMergeOutput = merge(target, source, {
        isMergeableObject: isPlainObject
    })
    
    customMergeOutput.someProperty.cool // => undefined
    customMergeOutput.someProperty.special // => 'oh yeah man totally'
    customMergeOutput.someProperty instanceof SuperSpecial // => true
    customMerge属性名に従って属性のデフォルトのマージ挙動を書き換えるための関数を指定します.customMerge関数は、各属性のキーパッド値を伝達し、属性値を統合するための関数を返します.
    これはまた、undefinedに戻ることができ、この場合、デフォルトのマージ挙動が使用される.
    const alex = {
      name: {
        first: 'Alex',
        last: 'Alexson'
      },
      pets: ['Cat', 'Parrot']
    }
    
    const tony = {
      name: {
        first: 'Tony',
        last: 'Tonison'
      },
      pets: ['Dog']
    }
    
    const mergeNames = (nameA, nameB) => `${nameA.first} and ${nameB.first}`
    
    const options = {
      customMerge: (key) => {
        if (key === 'name') {
          return mergeNames
        }
      }
    }
    
    const result = merge(alex, tony, options)
    
    result.name // => 'Alex and Tony'
    result.pets // => ['Cat', 'Parrot', 'Dog']
    cloneDeprecated.
    Defaults to true.clonefalseである場合、クローンではなく、直接にサブオブジェクトを複製する.これはバージョン2.x前のデフォルトです.
    参照
    基本的によく使われる方法シーンはこれだけです.もっと完全な使い方は直接文書を見ることができます.
    deepmerge
    Yaml Front Matter
    文字列の前でyamlまたはjsonを解析します.解析した内容と文字列の内容の残りを対象文字に入れます.
    Online Demo.
    Breaking Changes
    この自述ファイルは4.xバージョンに対して破壊的な変更を導入した.change ogを参照して、さらなる情報を取得する.
    3.x readme
    Example
    This
    ---
    name: Derek Worthen
    age: 127
    contact:
      email: [email protected]
      address: some location
    pets:
      - cat
      - dog
      - bat
    match: !!js/regexp /pattern/gim
    run: !!js/function function() { }
    ---
    Some Other content
    var fs = require('fs');
    var yamlFront = require('yaml-front-matter');
    
    fs.readFile('./some/file.txt', 'utf8', function(fileContents) {
        console.log(yamlFront.loadFront(fileContents));
    });
    out puts
    { 
        name: 'Derek Worthen',
        age: 127,
        contact: { email: '[email protected]', address: 'some location' },
        pets: [ 'cat', 'dog', 'bat' ],
        match: /pattern/gim,
        run: [Function],
        __content: '
    Some Other Content' }
    May also use JSON
    ---
    {
        "name": "Derek Worthen",
        "age": "young",
        "anArray": ["one","two"],
        "subObj":{"field1": "one"}
    }
    ---
    Some content
    NOTE:---は、フロントエンドコンテンツの開始及び終了を示す必要がある.開始後は改行が必要です.---と終了前の改行---.
    Install
    npm
    $ npm install yaml-front-matter
    コマンドラインツールを使う予定なら、-gマークを使ってください.
    $ npm install yaml-front-matter -g
    モジュールバインディング付きのnodeまたはクライアント(webpackまたはbrowsify)
    var yamlFront = require('yaml-front-matter');
    Browser Bundele
    dist/yaml Front.jsクライアントスクリプトは、yaml-front-materライブラリを大域的に公開し、yamlFront.クライアントスクリプトjs-yamlも必要である.いくつかの用例では、espirmaをロードする必要があるかもしれない.js-yamlを見て、さらなる情報を得る.
    
    
    
      // parse front matter with yamlFront.loadFront(String);
    
    Note:yaml-front-materはumdパッケージとして交付されますので、commmonjs、amdとブラウザー(全体として)の環境で働くべきです.
    Running Browser Example
    $ npm install --dev && npm start
    その後、localhost:8080を見学します.
    Buiding from source
    構築ファイルをdist/に出力する.
    $ npm install --dev && npm run build
    Running Tests
    npm install --dev && npm test
    Command Line
    Usage: yaml-front-matter [options] 
    
    Options:
    
    -h, --help            output usage information
    -v, --version         output the version number
    -c, --content [name]  set the property name for the files contents [__content]
    --pretty              formats json output with spaces. 
    注意、cliは使用しますsafeLoadFrontですので、regexp、関数、または未定義の値を含むyamlは解析されません.
    Example
    # Piping content from one file, through yaml parser and into another file
    cat ./some/file.txt | yaml-front-matter > output.txt
    JS-YAML
    Yamlフロントエンドの内容はjs-yamlを包装して、Yamlのフロントエンドの内容の解析をサポートしています.
    API
    loadFront(string)[options]
    var input = [
            '---
    post: title one
    ', 'anArray:
    - one
    - two
    ', 'subObject:
    prop1: cool
    prop2: two', '
    reg: !!js/regexp /pattern/gim', '
    fun: !!js/function function() { }
    ---
    ', 'content
    more' ].join(''); var results = yamlFront.loadFront(input); console.log(results);
    out puts
    { post: 'title one',
      anArray: [ 'one', 'two' ],
      subObject: { obj1: 'cool', obj2: 'two' },
      reg: /pattern/gim,
      fun: [Function],
      __content: '
    content
    more' }
    Front-materis optional.
    yamlFront.loadFront('Hello World');
    // => { __content: "Hello World!" }
    Conttent is optional
    yamlFront.loadFront('');
    // => { __content: '' }
    safeLoadFront(string)[options]
    apiはloadFrontと同じですが、regexps、関数、undefinedはサポートされていません.詳細についてはjs-yamlを参照してください.
    Options
    optionsオブジェクトは、js-yamlと同じオプションをサポートし、追加キーに対するサポートを追加します.
  • options.contentKeyName:yaml-front-materで解析されていないコンテンツを格納するためのオブジェクトキーを指定します.デフォルトは__contentです.
  • です.
    yamlFront.loadFront('Hello World', {
        contentKeyName: 'fileContents' 
    });
    // => { fileContents: "Hello World" }
    参照
    基本的によく使われる方法シーンはこれだけです.もっと完全な使い方は直接文書を見ることができます.
    js-yaml-front-mater