You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.0 KiB
42 lines
1.0 KiB
"use strict" |
|
|
|
// external tooling |
|
const resolve = require("resolve") |
|
|
|
const moduleDirectories = ["web_modules", "node_modules"] |
|
|
|
function resolveModule(id, opts) { |
|
return new Promise((res, rej) => { |
|
resolve(id, opts, (err, path) => (err ? rej(err) : res(path))) |
|
}) |
|
} |
|
|
|
module.exports = function (id, base, options) { |
|
const paths = options.path |
|
|
|
const resolveOpts = { |
|
basedir: base, |
|
moduleDirectory: moduleDirectories.concat(options.addModulesDirectories), |
|
paths, |
|
extensions: [".css"], |
|
packageFilter: function processPackage(pkg) { |
|
if (pkg.style) pkg.main = pkg.style |
|
else if (!pkg.main || !/\.css$/.test(pkg.main)) pkg.main = "index.css" |
|
return pkg |
|
}, |
|
preserveSymlinks: false, |
|
} |
|
|
|
return resolveModule(`./${id}`, resolveOpts) |
|
.catch(() => resolveModule(id, resolveOpts)) |
|
.catch(() => { |
|
if (paths.indexOf(base) === -1) paths.unshift(base) |
|
|
|
throw new Error( |
|
`Failed to find '${id}' |
|
in [ |
|
${paths.join(",\n ")} |
|
]` |
|
) |
|
}) |
|
}
|
|
|