nodejsインタラクティブライブラリ--hash-sum,deepmergeとyaml-front-mater
16490 ワード
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の
semver
npmの意味バージョン
セブン
二つの文字列の違いを測定する最も早いJS実現の一つ.
ルcache
最近最も使用されているアイテムのキャッシュオブジェクトを削除します.
ポーターfinder
自動検索
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
オリジナル
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依存関係はありません. の最小占有空間 はnodejsを支持して、io.js、ブラウザーの およびブラウザのハッシュ関数は、ソースコード に基づく.は、異なるオブジェクトタイプのために異なるハッシュを生成し、 .オブジェクト中の循環参照に対するサポート 属性割り当て順序を無視しました.
基本的によく使われる方法シーンはこれだけです.もっと完全な使い方は直接文書を見ることができます.
sh-sum
deepmerge
2つ以上のオブジェクトのエニュメレート・プロパティーを深さに結合します.
UMDパッケージは723 Bミニifed+gzipppedです.
Getting Startd
Example Usage
npmでこうします.
Include
deepmergeはCommunJSの入口点を暴露しました.
API
xとyが同じ要素である場合、yの値は結果に現れる.
統合は新しいオブジェクトを作成しますので、xまたはyは変更されません.
注意:デフォルトでは、配列は接続によって結合されます.
既存の配列値を完全に上書きします.接続ではありません.
2つの配列の同じ索引のオブジェクトを結合します.
これはデフォルトの配列統合アルゴリズムpre-version-2..0です.
オブジェクトが特別なタイプで、属性だけでなくオブジェクト全体をコピーしたい場合は、このようにしたくないかもしれません.
この点は
普通のオブジェクトの属性だけをクローンして、すべての「特殊」なタイプのインスタンスオブジェクトを無視したい場合、is-pline-objectを追加する必要があります.
これはまた、
Defaults to
参照
基本的によく使われる方法シーンはこれだけです.もっと完全な使い方は直接文書を見ることができます.
deepmerge
Yaml Front Matter
文字列の前でyamlまたはjsonを解析します.解析した内容と文字列の内容の残りを対象文字に入れます.
Online Demo.
Breaking Changes
この自述ファイルは4.xバージョンに対して破壊的な変更を導入した.change ogを参照して、さらなる情報を取得する.
3.x readme
Example
This
Install
npm
dist/yaml Front.jsクライアントスクリプトは、yaml-front-materライブラリを大域的に公開し、
Running Browser Example
Buiding from source
構築ファイルを
Example
Yamlフロントエンドの内容はjs-yamlを包装して、Yamlのフロントエンドの内容の解析をサポートしています.
API
loadFront(string)[options]
apiはloadFrontと同じですが、regexps、関数、undefinedはサポートされていません.詳細についてはjs-yamlを参照してください.
Options
optionsオブジェクトは、js-yamlと同じオプションをサポートし、追加キーに対するサポートを追加します. です.
基本的によく使われる方法シーンはこれだけです.もっと完全な使い方は直接文書を見ることができます.
js-yaml-front-mater
ライブラリ
作用
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
フィーチャー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
}
Installationnpmでこうします.
npm install deepmerge
deepmergeは、直接にブラウザで使用することができ、パケットマネージャ/バインディングを使用する必要がない:UMD version from unpkg.com.Include
deepmergeはCommunJSの入口点を暴露しました.
const merge = require('deepmerge')
ESMエントリポイントはWebpack bug.API
merge(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 arrays2つの配列の同じ索引のオブジェクトを結合します.
これはデフォルトの配列統合アルゴリズム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']
clone
Deprecated.Defaults to
true
.clone
がfalse
である場合、クローンではなく、直接にサブオブジェクトを複製する.これはバージョン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 Bundeledist/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 Testsnpm install --dev && npm test
Command LineUsage: 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-YAMLYamlフロントエンドの内容は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 optionalyamlFront.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