Пример #1
0
export function u_resolvePathFromImport (node, ctx?, ctr?, module?, makeAbs?){
    var path = node.path;
    if (path == null && node.namespace != null) {
        path = fromNs(node);			
    }
    if (path[0] === '@') {
        path = path_fromPrfx(path, _opts.prefixes);
        if (path == null) {
            path = node.path;
            warn_withNode('Prefix not defined: ' + path, node);
        }
    }
    if (path[path.length - 1] === '/' && node.exports != null) {
        path += node.exports[0].name;
    }
    if (false === hasExt(path)) {
        var c = path.charCodeAt(0);
        if (c === 47 || c === 46) {
            // / .
            var type = node.contentType;
            if (type == null || type === 'mask') {
                path += '.mask';
            }
        } else if (u_isNpmPath(path)) {
            return path;
        }
    }		
    return makeAbs === false
        ? path
        : toAbsolute(path, ctx, ctr, module);
};
Пример #2
0
            [ 'foo', 'bar.js', 'foo/bar.js' ],
            [ 'foo/qux', '../bar.js', 'foo/bar.js' ],
            
        ].forEach(row => {
            var [ base, path, expect ] = row;
            
            eq_(path_combine(base, path), expect);
        });
    },
    'prefixes': {
        'simple' () {
            var path = '@services/UserService';
            var prefixes = {
                services: '/src/{0}.es6'
            };
            var x = path_fromPrfx(path, prefixes);
            eq_(x, '/src/UserService.es6');
        },
        'multiple' () {
            var prefixes = {
                npm1: '/node_modules/{0}/lib/{0}.es6',
                npm2: '/node_modules/{0}/lib/{1}.es6'
            };
            var x = path_fromPrfx('@npm1/foo', prefixes);
            eq_(x, '/node_modules/foo/lib/foo.es6');

            var x = path_fromPrfx('@npm2/foo/other', prefixes);
            eq_(x, '/node_modules/foo/lib/other.es6');

            var x = path_fromPrfx('@npm2/foo/vendor/qux', prefixes);
            eq_(x, '/node_modules/foo/lib/vendor/qux.es6');