您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
When viewing a package.json file, automatically links dependencies to their NPM page
当前为
- // ==UserScript==
- // @name Github - package.json dependency linker
- // @description When viewing a package.json file, automatically links dependencies to their NPM page
- // @author James Skinner <spiralx@gmail.com> http://userscripts.org/users/55684
- // @namespace http://spiralx.org/
- // @license BSD
- // @version 0.0.2
- // @include https://github.com/*/package.json
- // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.js
- // ==/UserScript==
- function format(formatString, data) {
- data = arguments.length == 2 && typeof data === "object" && !Array.isArray(data)
- ? data
- : [].slice.call(arguments, 1);
- return formatString
- .replace(/\{\{/g, String.fromCharCode(0))
- .replace(/\}\}/g, String.fromCharCode(1))
- .replace(/\{([^}]+)\}/g, function(match, path) {
- try {
- var p = path.replace(/\[(-?\w+)\]/g, '.$1').split('.');
- //console.log('path="%s" (%s), data=%s', path, p.toSource(), data.toSource());
- return String(p.reduce(function(o, n) {
- return o.slice && !isNaN(n) ? o.slice(n).shift() : o[n];
- }, data));
- }
- catch (ex) {
- return match;
- }
- })
- .replace(/\x00/g, "{")
- .replace(/\x01/g, "}");
- }
- // --------------------------------------------------------------------------
- var $code = $('.highlight .js-file-line'),
- pkg = JSON.parse($code.text()),
- depKeys = [
- "dependencies",
- "devDependencies",
- "peerDependencies",
- "bundleDependencies",
- "bundledDependencies",
- "optionalDependencies"
- ];
- depKeys.forEach(function(k) {
- var deps = pkg[k] || {};
- for (var module in deps) {
- var
- url = 'https://www.npmjs.org/package/' + module,
- // jsonUrl = 'http://registry.npmjs.org/' + module + '/latest',
- t = '"' + module + '"';
- $code
- .find('.nt')
- .filter(function() {
- return $(this).text().trim() === t
- })
- .html(format('"<a href="{0}">{1}</a>"', url, module));
- }
- });