New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

gulp-seajs-trs

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gulp-seajs-trs - npm Package Compare versions

Comparing version 0.2.1 to 1.0.1

deps.js

234

index.js
var es = require('event-stream');
var stream = require('stream');
var gulpUtil = require('gulp-util');
var UglifyJs = require('uglify-js');
var PluginError = gulpUtil.PluginError;
var util = require('node-lancer');
var pluginName = require('./package.json').name;
var util = require('./util.js');
// var util = require('./util.js');
var path = require('path');
var url = require('url');
function merge (f, t) {
Object.keys(t || {}).forEach(function (key) {
var v = t[key];
if (undefined != v) {
if (typeof v === 'object') {
f[key] = merge(f[key],v);
} else {
f[key] = v;
}
var getDeps = require('./deps');
var logger = util.logger;
var debug = util.logger('gulp:seajs:trs');
var helper = require('./helper');
exports = module.exports = function (config) {
config = util.extend(true, {
src: '',
dest: "",
base: 'https://g.alicdn.com/',
varName: "",
vars: {},
paths: {
},
alias: {
},
deps: {},
ignore: [],
mapfile: 'map.js'
}, config);
debug.log(config);
'dest varName src'.split(' ').some(function (name) {
if(!config[name]) {
util.logger.error('config.%s required', name);
process.exit(1);
}
});
return f;
}
exports = module.exports = function (config) {
var rootdir = process.cwd();
config = merge({
alias: {},
paths: {},
combo: {},
base: 'https://g.alicdn.com/ju/',
mapfile: 'map.js',
rootdir: rootdir+'/src/',
name: '',
rename: '',
version: '0.0.0',
charset: 'utf-8',
ignore: []
}, config);
// 没有配置基础地址,则抛出异常。
if (!config.base) {
console.error('PluginError: %s config.base invalid.', pluginName);
process.emit('exit', 1);
util.each(config.vars, function (val,name) {
config.vars[name] = val.replace(/^https*:\/\//i,'//');
});
util.each(config.paths, function (val,name) {
config.paths[name] = val.replace(/^https*:\/\//i,'//');
});
util.each(config.alias, function (val,name) {
config.alias[name] = val.replace(/^https*:\/\//i,'//');
});
var prefix = config.vars[config.varName];
if(!prefix) {
util.logger.error('config.vars["varName"] %s required ', config.varName );
process.exit(1);
}
// 本地模块重命名
var packageName = config.rename;
// 发布后的地址
var baseOnlinePath = config.paths[packageName] = config.paths[packageName] || resolvePath(config.base + '/' + config.name + '/' + config.version);
function resolvePath (dir) {
if (!dir) {return}
var re_protocol = /https{0,1}:\/\//i;
var protocol = dir.match(re_protocol) || [];
return protocol.join('') + dir.replace(re_protocol,'').replace(/\/+/g,'/');
if (!prefix.match(/^[^\/]+\/[^\/]+\/\d+\.\d+\.\d+$/i)) {
util.logger.warn('vars should contain the %s and must be `${package.group}/${packground.name}/${package.version}', config.varName);
}
function realPath2Id (fullPath) {
var longId = fullPath.replace(config.rootdir, packageName + '/');
var online = fullPath.replace(config.rootdir, config.base + '/');
var shortId;
Object.keys(config.alias).some(function (name) {
var alias = config.alias[name];
if (longId.indexOf(alias) === 0) {
// 别名文件
if (alias.match(/\.js$/i) && alias === longId) {
shortId = name;
// 文件夹
} else {
shortId = longId.replace(alias, name + '/');
}
return true;
}
prefix = '{'+config.varName+'}';
return es.map(function (file, cb) {
debug.log('start translate ', file.relative);
var ignored = helper.ignore(String(file.relative), config.ignore, {
base: config.src
});
return {
local: resolvePath(fullPath),
online: resolvePath(online),
longId: resolvePath(longId),
shortId: resolvePath(shortId)
};
};
function id2RealPath (id) {
var shortId = id;
var longId;
var fullPath;
var local;
Object.keys(config.alias).some(function (name) {
var alias = config.alias[name];
// juicer -> juicer
// juicer/index.js -> juicer
if (id === name) {
longId = alias;
} else if (id.indexOf(name) === 0) {
longId = id.replace(name, alias +'/');
}
if (longId) {
return true;
}
});
Object.keys(config.paths).some(function (name) {
var base = config.paths[name];
if (longId.indexOf(name) === 0) {
fullPath = longId.replace(name, base + '/');
if (name === config.rename) {
local = longId.replace(name, config.rootdir+'/');
}
return true;
}
});
return {
shortId: resolvePath(shortId),
longId: resolvePath(longId),
online: resolvePath(fullPath),
local: resolvePath(local)
if (ignored) {
return cb(null, file);
}
}
var sub2sup = {};
var sup2sub = {};
var filesMap = {};
return es.map(function (file, callback) {
// console.log(config)
// 跳过无需压缩的文件
if (util.ignore(String(file.relative), config.ignore, {
base: config.rootdir
})) {
return callback(null, file);
}
var code = String(file.contents);
var filePath = String(file.path);
var supMod = realPath2Id(filePath);
var _files = filesMap[supMod.online] = filesMap[supMod.online] || supMod;
var deps = util.getRequires(code).map(function (name) {
var subMod;
// relative path
if (name[0] === '.') {
subMod = realPath2Id(path.join(path.dirname(filePath), name));
} else {
subMod = id2RealPath(name);
var id = prefix + `/${file.relative}`;
var cnt = file.contents.toString();
var deps = getDeps(file.contents.toString()).map(function (subid) {
if (config.alias[subid]) {
return subid;
}
sub2sup[subMod.online] = sub2sup[subMod.online] || {};
sub2sup[subMod.online][supMod.online] = 1;
sup2sub[supMod.online] = sup2sub[supMod.online] || {};
sup2sub[supMod.online][subMod.online] = 1;
(_files.deps = _files.deps || {})[subMod.online] = subMod;
var relativePath = path.relative(path.dirname(supMod.longId), subMod.longId);
if (relativePath[0] !== '.') {
relativePath = './' + relativePath;
if (subid[0] === '.') {
return path.join(path.dirname(id), subid);
}
return [name, relativePath, subMod.shortId || subMod.longId].sort(function (a, b) {
return a.length > b.length;
})[0];
});
util.circleCheck(filesMap);
file.contents = util.fillWrap(code, supMod.shortId || supMod.longId, deps, config.anonymous);
callback(null, file);
config.mapfile && util.mapfile(config.mapfile, {
alias: config.alias,
paths: config.paths,
charset: config.charset,
combo: filesMap,
base: config.base
});
id = id.replace(/\.js$/,'');
config.deps[id] = deps;
file.contents = helper.fillWrap(cnt, id, deps);
cb(null, file);
exports._t && clearTimeout(exports._t);
exports._t = setTimeout(function () {
var info = {
base: config.base.replace(/^https:\/\//i,'//'),
vars: config.vars,
paths: config.paths,
alias: config.alias,
deps: config.deps
};
var code = "seajs.config(" + JSON.stringify(info) + ")";
require('fs').writeFileSync(path.join(config.src, config.mapfile), code);
require('fs').writeFileSync(path.join(config.dest, config.mapfile), code);
}, 500);
debug.log('module %s depends %s ',id, deps);
});
}
}
{
"name": "gulp-seajs-trs",
"version": "0.2.1",
"version": "1.0.1",
"description": "An seajs transport plugin ",

@@ -29,8 +29,8 @@ "main": "index.js",

"dependencies": {
"node-lancer": "*",
"event-stream": "^3.1.7",
"gulp-util": "^3.0.1",
"js-beautify": "^1.5.4",
"minimatch": "^2.0.1",
"uglify-js": "^2.4.16"
"node-lancer": "^1.0.2"
}
}

@@ -5,32 +5,28 @@ # 使用说明

```json
```js
{
// 别名的文件或者文件夹,文件夹以 /结尾 以文件夹名称开始
// 例如: common/widgets/slider/
alias: {},
// 路径别名,用以控制线上文件路径 如未设置当前模块,则按照
// `{base}/{name}/{version}/` 格式进行拼接
// 拼接最终配置无`http(s):`
paths: {},
// 依赖关系拓扑,用于动态combo
combo: {},
// 基础路径地址。
base: 'https://g.alicdn.com/ju/',
// 是否生成map.js 如果不需要,可配置false
mapfile: 'map.js',
// 根目录,绝对路径
rootdir: rootdir+'/src/',
// 当前包名
// 用于网络请求
name: '',
// 用于定义包
rename: '',
// 版本设置
version: '0.0.0',
// 编码设置
charset: 'utf-8',
// 忽略部分文件,防止二次编译等问题
// 根目录文件 用于存储 map.js (debug 期用 src)
src: '',
// 输出根目录 用于存储 输出后的 map.js
dest: "",
// base
base: 'https://g.alicdn.com/',
// 当前包的 var name
varName: "",
// 多个包的 var names
vars: {},
// 约定的一些路径
paths: {
},
// 映射的一些公共库
alias: {
},
// 依赖关系
deps: {},
// 忽略的文件
ignore: [],
// 是否匿名包,默认是false
anonymous: false
// 输出依赖配置表的文件名
mapfile: 'map.js'
}

@@ -37,0 +33,0 @@ ```

@@ -116,3 +116,3 @@ var REQUIRE_RE = /"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|\/\*[\S\s]*?\*\/|\/(?:\\\/|[^\/\r\n])+\/(?=[^\/])|\/\/.*|\.\s*require|(?:^|[^$])\brequire\s*\(\s*(["'])(.+?)\1\s*\)/g;

return pattern.some(function (pattern) {
//
//
return exports.ignore(relativePath, pattern, opts);

@@ -172,2 +172,2 @@ });

require('fs').writeFileSync(file, code);
};
};
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc