Skip to content

Commit

Permalink
Merge branch 'resolve'
Browse files Browse the repository at this point in the history
  • Loading branch information
Gcaufy committed Dec 25, 2017
2 parents d9e3459 + ff15607 commit d9d4ac9
Show file tree
Hide file tree
Showing 12 changed files with 326 additions and 45 deletions.
45 changes: 35 additions & 10 deletions packages/wepy-cli/src/compile-script.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,31 +24,44 @@ let appPath, npmPath, src, dist;

export default {
resolveDeps (code, type, opath) {

let params = cache.getParams();
let config = cache.getConfig();
let wpyExt = params.wpyExt;
let npmInfo = opath.npm;


return code.replace(/require\(['"]([\w\d_\-\.\/@]+)['"]\)/ig, (match, lib) => {
let npmInfo = opath.npm;

if (lib === './_wepylogs.js') {
return match;
}
let resolved = lib;


let target = '', source = '', ext = '', needCopy = false;

if (config.output === 'ant' && lib === 'wepy') {
lib = 'wepy-ant';
}
lib = resolve.resolveAlias(lib);
if (path.isAbsolute(lib)) {
lib = resolve.resolveAlias(lib, opath);
if (lib === 'false') {
return `{}`
} else if (path.isAbsolute(lib)) {
source = lib;
target = util.getDistPath(source);
} else if (lib[0] === '.') { // require('./something'');
source = path.join(opath.dir, lib); // e:/src/util
let resolvedLib;
if (npmInfo && npmInfo.pkg._activeFields.length) {
resolvedLib = resolve.resolveSelfFields(npmInfo.dir, npmInfo.pkg, path.join(path.relative(npmInfo.dir, opath.dir), lib));
}
if (resolvedLib) {
source = path.join(npmInfo.dir, resolvedLib);
lib = path.relative(opath.dir, source);
if (lib[0] !== '.') {
lib = './' + lib;
}
} else {
source = path.join(opath.dir, lib);
}
if (type === 'npm') {
target = path.join(npmPath, path.relative(npmInfo.modulePath, source));
needCopy = true;
Expand All @@ -61,6 +74,11 @@ export default {
lib.indexOf('/') === lib.length - 1 || // reqiore('a/b/something/')
(lib[0] === '@' && lib.indexOf('/') !== -1 && lib.lastIndexOf('/') === lib.indexOf('/')) // require('@abc/something')
) {
// require('stream') -> browsers: emitter->emitter-component;
if (npmInfo && npmInfo.pkg._activeFields.length) {
let resolvedLib = resolve.resolveSelfFields(npmInfo.dir, npmInfo.pkg, lib);
lib = resolvedLib ? resolvedLib : lib;
}

let mainFile = resolve.getMainFile(lib);

Expand All @@ -71,12 +89,19 @@ export default {
lib: lib,
dir: mainFile.dir,
modulePath: mainFile.modulePath,
file: mainFile.file
file: mainFile.file,
pkg: mainFile.pkg
};
source = path.join(mainFile.dir, mainFile.file);
target = path.join(npmPath, lib, mainFile.file);

lib += path.sep + mainFile.file;
let resolvedFile;
if (mainFile.pkg && mainFile.pkg._activeFields.length) {
resolvedFile = resolve.resolveSelfFields(mainFile.dir, mainFile.pkg, mainFile.file);
}
resolvedFile = resolvedFile ? resolvedFile : mainFile.file;
source = path.join(mainFile.dir, resolvedFile);
target = path.join(npmPath, lib, resolvedFile);

lib += path.sep + resolvedFile;
ext = '';
needCopy = true;
} else { // require('babel-runtime/regenerator')
Expand Down
10 changes: 6 additions & 4 deletions packages/wepy-cli/src/compile-style.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,14 @@ export default {
requires.forEach((r) => {
let comsrc = null;
isNPM = false;
if (path.isAbsolute(r)) {
if (path.extname(r) === '' && util.isFile(r + ext)) {
comsrc = r + ext;
let lib = resolve.resolveAlias(r, opath);

if (path.isAbsolute(lib)) {
if (path.extname(lib) === '' && util.isFile(lib + ext)) {
comsrc = lib + ext;
}
} else {
let lib = resolve.resolveAlias(r);
// let lib = resolve.resolveAlias(r, opath);
if (path.isAbsolute(lib)) {
comsrc = lib;
} else {
Expand Down
10 changes: 9 additions & 1 deletion packages/wepy-cli/src/compile-wpy.js
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ export default {
}
});
if (Object.keys(props).length) {
rst.script.code =rst.script.code.replace(/[\s\r\n]components\s*=[\s\r\n]*/, (match, item, index) => {
rst.script.code = rst.script.code.replace(/[\s\r\n]components\s*=[\s\r\n]*/, (match, item, index) => {
return `$repeat = ${JSON.stringify($repeat)};\r\n$props = ${JSON.stringify(props)};\r\n$events = ${JSON.stringify(events)};\r\n${match}`;
});
}
Expand Down Expand Up @@ -471,6 +471,14 @@ export default {
} else {
requires.push(path.join(opath.dir, wpy.template.components[k]));
}

// 去重
// Example:
// components = {
// Count1: '../components/count',
// Count2: '../components/count'
// };
requires = util.unique(requires)
}
}
try {
Expand Down
30 changes: 22 additions & 8 deletions packages/wepy-cli/src/compile.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export default {
reg = new RegExp('\\' + ext + '$');
if (!reg.test(importpath))
importpath = importpath + ext;
let resolved = resolve.resolveAlias(importpath);
let resolved = resolve.resolveAlias(importpath, opath);
let compath;
if (path.isAbsolute(resolved)) {
compath = path.resolve(resolved);
Expand Down Expand Up @@ -166,6 +166,7 @@ export default {
util.error('没有检测到wepy.config.js文件, 请执行`wepy new demo`创建');
return false;
}

resolve.init(wepyrc.resolve || {});
loader.attach(resolve);

Expand Down Expand Up @@ -202,11 +203,17 @@ export default {


if (config.output === 'web') {
wepyrc.web = wepyrc.web || {};
wepyrc.web.dist = wepyrc.web.dist || 'web';
wepyrc.web.src = wepyrc.web.src || 'src';
wepyrc.build = wepyrc.build || {};
wepyrc.build.web = wepyrc.build.web || {};
wepyrc.build.web.dist = wepyrc.build.web.dist || 'web';
wepyrc.build.web.src = wepyrc.build.web.src || 'src';
if (wepyrc.build.web.resolve)
wepyrc.resolve = Object.assign({}, wepyrc.resolve, wepyrc.build.web.resolve);
wepyrc.output = 'web';

resolve.init(wepyrc.resolve || {});
loader.attach(resolve);

if (!resolve.getPkg('wepy-web')) {
util.log('正在尝试安装缺失资源 wepy-web,请稍等。', '信息');
util.exec(`npm install wepy-web --save`).then(d => {
Expand All @@ -219,11 +226,17 @@ export default {
return false;
}
} else if (config.output === 'ant') {
wepyrc.ant = wepyrc.ant || {};
wepyrc.ant.dist = wepyrc.ant.dist || 'ant';
wepyrc.ant.src = wepyrc.ant.src || 'src';
wepyrc.build = wepyrc.build || {};
wepyrc.build.ant = wepyrc.build.ant || {};
wepyrc.build.ant.dist = wepyrc.build.ant.dist || 'ant';
wepyrc.build.ant.src = wepyrc.build.ant.src || 'src';
if (wepyrc.build.ant.resolve)
wepyrc.resolve = Object.assign({}, wepyrc.resolve, wepyrc.build.ant.resolve);
wepyrc.output = 'ant';

resolve.init(wepyrc.resolve || {});
loader.attach(resolve);

if (!resolve.getPkg('wepy-ant')) {
util.log('正在尝试安装缺失资源 wepy-ant,请稍等。', '信息');
util.exec(`npm install wepy-ant --save`).then(d => {
Expand All @@ -236,6 +249,7 @@ export default {
return false;
}
}

return true;
},

Expand Down Expand Up @@ -393,4 +407,4 @@ export default {
});
}
}
}
}
Loading

0 comments on commit d9d4ac9

Please sign in to comment.