Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
表示
レイアウト
分割
統合
ライブエディター
空白の変更を非表示
未変更行を折りたたむ
折り返しなし
比較精度
スマート
構文
なし
外観を変更
処理
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
Untitled diff
作成日
9 年前
差分は期限切れになりません
クリア
エクスポート
共有
説明
2 削除
行
合計
削除
文字
合計
削除
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
87 行
すべてコピー
4 追加
行
合計
追加
文字
合計
追加
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
89 行
すべてコピー
let fs = require('fs'),
let fs = require('fs'),
path = require('path'),
path = require('path'),
crypto = require('crypto'),
crypto = require('crypto'),
Stream = require('stream'),
Stream = require('stream'),
gutil = require('gulp-util'),
gutil = require('gulp-util'),
oncechecksums = {};
oncechecksums = {};
module.exports = function(options = {}) {
module.exports = function(options = {}) {
let stream = new Stream.Transform({objectMode: true}),
let stream = new Stream.Transform({objectMode: true}),
settings = {
settings = {
namespace: false,
namespace: false,
algorithm: 'sha1',
algorithm: 'sha1',
file: '.checksums',
file: '.checksums',
fileIndent: 4
fileIndent: 4
};
};
options = (typeof options === 'string') ? {namespace: options} : options;
options = (typeof options === 'string') ? {namespace: options} : options;
for (let key in options) {
for (let key in options) {
if (options.hasOwnProperty(key)) {
if (options.hasOwnProperty(key)) {
settings[key] = options[key];
settings[key] = options[key];
}
}
}
}
if (settings.file) {
if (settings.file) {
if (!fs.existsSync(settings.file)) {
if (!fs.existsSync(settings.file)) {
fs.writeFileSync(settings.file, JSON.stringify({}, null, settings.fileIndent));
fs.writeFileSync(settings.file, JSON.stringify({}, null, settings.fileIndent));
}
}
try {
try {
let content = fs.readFileSync(settings.file, 'utf8');
let content = fs.readFileSync(settings.file, 'utf8');
if (content) {
if (content) {
oncechecksums = JSON.parse(content);
oncechecksums = JSON.parse(content);
}
}
} catch (e) {
} catch (e) {
// go on about our business
// go on about our business
console.log(e);
console.log(e);
}
}
}
}
if (!!settings.namespace && !oncechecksums[settings.namespace]) {
if (!!settings.namespace && !oncechecksums[settings.namespace]) {
oncechecksums[settings.namespace] = {};
oncechecksums[settings.namespace] = {};
}
}
stream._transform = function(file, encoding, next) {
stream._transform = function(file, encoding, next) {
コピー
コピー済み
コピー
コピー済み
var flow = this;
if (file.isBuffer()) {
if (file.isBuffer()) {
let filename = path.basename(file.path),
let filename = path.basename(file.path),
filechecksum = crypto
filechecksum = crypto
.createHash(settings.algorithm || 'sha1')
.createHash(settings.algorithm || 'sha1')
.update(file.contents.toString('utf8'))
.update(file.contents.toString('utf8'))
.digest('hex');
.digest('hex');
if (settings.namespace in oncechecksums) {
if (settings.namespace in oncechecksums) {
if (oncechecksums[settings.namespace][filename] === filechecksum) {
if (oncechecksums[settings.namespace][filename] === filechecksum) {
return next();
return next();
}
}
oncechecksums[settings.namespace][filename] = filechecksum;
oncechecksums[settings.namespace][filename] = filechecksum;
} else {
} else {
if (oncechecksums[filename] === filechecksum) {
if (oncechecksums[filename] === filechecksum) {
return next();
return next();
}
}
oncechecksums[filename] = filechecksum;
oncechecksums[filename] = filechecksum;
}
}
if (settings.file) {
if (settings.file) {
fs.writeFile(settings.file, JSON.stringify(oncechecksums, null, settings.fileIndent), error => {
fs.writeFile(settings.file, JSON.stringify(oncechecksums, null, settings.fileIndent), error => {
if (error) {
if (error) {
return next(new gutil.PluginError('gulp-once', error, {showStack: true}));
return next(new gutil.PluginError('gulp-once', error, {showStack: true}));
}
}
});
});
}
}
コピー
コピー済み
コピー
コピー済み
return next(null, file);
}
}
コピー
コピー済み
コピー
コピー済み
flow.push(file);
return next();
};
};
return stream;
return stream;
};
};
保存された差分
原文
ファイルを開く
let fs = require('fs'), path = require('path'), crypto = require('crypto'), Stream = require('stream'), gutil = require('gulp-util'), oncechecksums = {}; module.exports = function(options = {}) { let stream = new Stream.Transform({objectMode: true}), settings = { namespace: false, algorithm: 'sha1', file: '.checksums', fileIndent: 4 }; options = (typeof options === 'string') ? {namespace: options} : options; for (let key in options) { if (options.hasOwnProperty(key)) { settings[key] = options[key]; } } if (settings.file) { if (!fs.existsSync(settings.file)) { fs.writeFileSync(settings.file, JSON.stringify({}, null, settings.fileIndent)); } try { let content = fs.readFileSync(settings.file, 'utf8'); if (content) { oncechecksums = JSON.parse(content); } } catch (e) { // go on about our business console.log(e); } } if (!!settings.namespace && !oncechecksums[settings.namespace]) { oncechecksums[settings.namespace] = {}; } stream._transform = function(file, encoding, next) { if (file.isBuffer()) { let filename = path.basename(file.path), filechecksum = crypto .createHash(settings.algorithm || 'sha1') .update(file.contents.toString('utf8')) .digest('hex'); if (settings.namespace in oncechecksums) { if (oncechecksums[settings.namespace][filename] === filechecksum) { return next(); } oncechecksums[settings.namespace][filename] = filechecksum; } else { if (oncechecksums[filename] === filechecksum) { return next(); } oncechecksums[filename] = filechecksum; } if (settings.file) { fs.writeFile(settings.file, JSON.stringify(oncechecksums, null, settings.fileIndent), error => { if (error) { return next(new gutil.PluginError('gulp-once', error, {showStack: true})); } }); } return next(null, file); } }; return stream; };
変更されたテキスト
ファイルを開く
let fs = require('fs'), path = require('path'), crypto = require('crypto'), Stream = require('stream'), gutil = require('gulp-util'), oncechecksums = {}; module.exports = function(options = {}) { let stream = new Stream.Transform({objectMode: true}), settings = { namespace: false, algorithm: 'sha1', file: '.checksums', fileIndent: 4 }; options = (typeof options === 'string') ? {namespace: options} : options; for (let key in options) { if (options.hasOwnProperty(key)) { settings[key] = options[key]; } } if (settings.file) { if (!fs.existsSync(settings.file)) { fs.writeFileSync(settings.file, JSON.stringify({}, null, settings.fileIndent)); } try { let content = fs.readFileSync(settings.file, 'utf8'); if (content) { oncechecksums = JSON.parse(content); } } catch (e) { // go on about our business console.log(e); } } if (!!settings.namespace && !oncechecksums[settings.namespace]) { oncechecksums[settings.namespace] = {}; } stream._transform = function(file, encoding, next) { var flow = this; if (file.isBuffer()) { let filename = path.basename(file.path), filechecksum = crypto .createHash(settings.algorithm || 'sha1') .update(file.contents.toString('utf8')) .digest('hex'); if (settings.namespace in oncechecksums) { if (oncechecksums[settings.namespace][filename] === filechecksum) { return next(); } oncechecksums[settings.namespace][filename] = filechecksum; } else { if (oncechecksums[filename] === filechecksum) { return next(); } oncechecksums[filename] = filechecksum; } if (settings.file) { fs.writeFile(settings.file, JSON.stringify(oncechecksums, null, settings.fileIndent), error => { if (error) { return next(new gutil.PluginError('gulp-once', error, {showStack: true})); } }); } } flow.push(file); return next(); }; return stream; };
違いを見つける