stylus-loader
Advanced tools
Comparing version 4.0.0 to 4.1.0
@@ -5,2 +5,14 @@ # Changelog | ||
## [4.1.0](https://github.com/webpack-contrib/stylus-loader/compare/v4.0.0...v4.1.0) (2020-10-02) | ||
### Features | ||
* webpack resolver supports the `import` option ([8bca526](https://github.com/webpack-contrib/stylus-loader/commit/8bca5262b5b3223108d14f8e10617ae6ca8dd85f)) | ||
### Bug Fixes | ||
* source maps ([#290](https://github.com/webpack-contrib/stylus-loader/issues/290)) ([1be8169](https://github.com/webpack-contrib/stylus-loader/commit/1be8169c888d1a8e3531e79ebe1e1ef53d7821e7)) | ||
## [4.0.0](https://github.com/webpack-contrib/stylus-loader/compare/v3.0.2...v4.0.0) (2020-09-29) | ||
@@ -7,0 +19,0 @@ |
@@ -59,3 +59,3 @@ "use strict"; | ||
comment: false, | ||
sourceRoot: this.rootContext, | ||
sourceRoot: stylusOptions.dest, | ||
basePath: this.rootContext | ||
@@ -140,3 +140,3 @@ } : stylusOptions.sourcemap); | ||
if (map && useSourceMap) { | ||
map = (0, _utils.normalizeSourceMap)(map, this.rootContext); | ||
map = (0, _utils.normalizeSourceMap)(map, stylusOptions.dest); | ||
@@ -143,0 +143,0 @@ try { |
@@ -284,5 +284,37 @@ "use strict"; | ||
}); | ||
const resolvedImportDependencies = new Map(); | ||
const resolvedDependencies = new Map(); | ||
const seen = new Set(); | ||
await getDependencies(resolvedDependencies, loaderContext, fileResolve, globResolve, seen, code, loaderContext.resourcePath, options); | ||
const optionsImports = []; | ||
for (const importPath of options.imports) { | ||
const isGlob = _fastGlob.default.isDynamicPattern(importPath); | ||
optionsImports.push({ | ||
importPath, | ||
resolved: resolveFilename(loaderContext, fileResolve, globResolve, isGlob, _path.default.dirname(loaderContext.resourcePath), importPath) | ||
}); | ||
} | ||
await Promise.all(optionsImports.map(async result => { | ||
const { | ||
importPath | ||
} = result; | ||
let { | ||
resolved | ||
} = result; | ||
try { | ||
resolved = await resolved; | ||
} catch (ignoreError) { | ||
return; | ||
} | ||
const isArray = Array.isArray(resolved); // `stylus` returns forward slashes on windows | ||
// eslint-disable-next-line no-param-reassign | ||
result.resolved = isArray ? resolved.map(item => _path.default.normalize(item)) : _path.default.normalize(resolved); | ||
resolvedImportDependencies.set(importPath, result); | ||
})); | ||
return class CustomEvaluator extends _stylus.Evaluator { | ||
@@ -296,48 +328,56 @@ visitImport(imported) { | ||
if (node.name !== 'url' && nodePath && !URL_RE.test(nodePath) && // `imports` is not resolved, let's avoid extra actions | ||
!this.options.imports.includes(nodePath)) { | ||
const dependencies = resolvedDependencies.get(_path.default.normalize(node.filename)); | ||
if (node.name !== 'url' && nodePath && !URL_RE.test(nodePath)) { | ||
let dependency; | ||
const isEntrypoint = loaderContext.resourcePath === node.filename; | ||
if (dependencies) { | ||
const dependency = dependencies.find(item => { | ||
if (item.originalLineno === node.lineno && item.originalColumn === node.column && item.originalNodePath === nodePath) { | ||
if (item.error) { | ||
webpackResolveError = item.error; | ||
} else { | ||
return item.resolved; | ||
if (isEntrypoint) { | ||
dependency = resolvedImportDependencies.get(nodePath); | ||
} | ||
if (!dependency) { | ||
const dependencies = resolvedDependencies.get(_path.default.normalize(node.filename)); | ||
if (dependencies) { | ||
dependency = dependencies.find(item => { | ||
if (item.originalLineno === node.lineno && item.originalColumn === node.column && item.originalNodePath === nodePath) { | ||
if (item.error) { | ||
webpackResolveError = item.error; | ||
} else { | ||
return item.resolved; | ||
} | ||
} | ||
} | ||
return false; | ||
}); | ||
return false; | ||
}); | ||
} | ||
} | ||
if (dependency) { | ||
const { | ||
resolved | ||
} = dependency; | ||
if (dependency) { | ||
const { | ||
resolved | ||
} = dependency; | ||
if (!Array.isArray(resolved)) { | ||
// Avoid re globbing when resolved import contains glob characters | ||
node.string = _fastGlob.default.escapePath(resolved); | ||
} else if (resolved.length > 0) { | ||
let hasError = false; | ||
const blocks = resolved.map(item => { | ||
const clonedImported = imported.clone(); | ||
const clonedNode = this.visit(clonedImported.path).first; // Avoid re globbing when resolved import contains glob characters | ||
if (!Array.isArray(resolved)) { | ||
// Avoid re globbing when resolved import contains glob characters | ||
node.string = _fastGlob.default.escapePath(resolved); | ||
} else if (resolved.length > 0) { | ||
let hasError = false; | ||
const blocks = resolved.map(item => { | ||
const clonedImported = imported.clone(); | ||
const clonedNode = this.visit(clonedImported.path).first; // Avoid re globbing when resolved import contains glob characters | ||
clonedNode.string = _fastGlob.default.escapePath(item); | ||
let result; | ||
clonedNode.string = _fastGlob.default.escapePath(item); | ||
let result; | ||
try { | ||
result = super.visitImport(clonedImported); | ||
} catch (error) { | ||
hasError = true; | ||
} | ||
try { | ||
result = super.visitImport(clonedImported); | ||
} catch (error) { | ||
hasError = true; | ||
} | ||
return result; | ||
}); | ||
return result; | ||
}); | ||
if (!hasError) { | ||
return mergeBlocks(blocks); | ||
} | ||
if (!hasError) { | ||
return mergeBlocks(blocks); | ||
} | ||
@@ -344,0 +384,0 @@ } |
{ | ||
"name": "stylus-loader", | ||
"version": "4.0.0", | ||
"version": "4.1.0", | ||
"description": "Stylus loader for webpack", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
44743
555
0