postcss-modules-tilda
Advanced tools
Comparing version 1.0.1 to 2.0.0
49
index.js
@@ -1,31 +0,48 @@ | ||
const postcss = require('postcss') | ||
const matchImports = /^((?:.+?|\([\s\S]+?\))\s+from\s+)(['"])(@?\w+.*?)\2$/ | ||
const postcss = require('postcss'); | ||
module.exports = postcss.plugin('postcss-modules-tilda', () => root => { | ||
root.walk(node => { | ||
const modulePathPattern = '([\'"])(@?\\w+.*?)'; | ||
const prefixPattern = '((?:.+?|\\([\\s\\S]+?\\))\\s+from\\s+)'; | ||
const matchImports = new RegExp(`^${prefixPattern}${modulePathPattern}\\2$`); | ||
const matchOnlyImportPath = new RegExp(`^${modulePathPattern}\\1$`); | ||
module.exports = postcss.plugin('postcss-modules-tilda', () => (root) => { | ||
root.walk((node) => { | ||
if (node.type === 'atrule') { | ||
let newImports = updateImports(node.params) | ||
const newImports = node.name === 'import' | ||
? updateImportAtRulePath(node.params) | ||
: updateImports(node.params); | ||
if (newImports) { | ||
node.params = newImports | ||
node.params = newImports; | ||
} | ||
return | ||
return; | ||
} | ||
if (node.type === 'decl' && node.prop === 'composes') { | ||
let newImports = updateImports(node.value) | ||
const newImports = updateImports(node.value); | ||
if (newImports) { | ||
node.value = newImports | ||
node.value = newImports; | ||
} | ||
} | ||
}) | ||
}) | ||
}); | ||
}); | ||
function updateImports (imports) { | ||
let matches = matchImports.exec(imports) | ||
function updateImports(imports) { | ||
const matches = matchImports.exec(imports); | ||
if (!matches) { | ||
return undefined | ||
return undefined; | ||
} | ||
let [, prefix, quote, path] = matches | ||
return `${ prefix }${ quote }~${ path }${ quote }` | ||
const [, prefix, quote, path] = matches; | ||
return `${prefix}${quote}~${path}${quote}`; | ||
} | ||
function updateImportAtRulePath(stringLiteral) { | ||
const matches = matchOnlyImportPath.exec(stringLiteral); | ||
if (!matches) { | ||
return undefined; | ||
} | ||
const [, quote, path] = matches; | ||
return `${quote}~${path}${quote}`; | ||
} |
{ | ||
"name": "postcss-modules-tilda", | ||
"version": "1.0.1", | ||
"version": "2.0.0", | ||
"description": "PostCSS plugin to restore the way to resolve modules CSS Modules values paths that css-loader used before 1.0", | ||
@@ -28,18 +28,24 @@ "keywords": [ | ||
"devDependencies": { | ||
"@logux/eslint-config": "^27.0.0", | ||
"eslint": "^5.10.0", | ||
"eslint-config-postcss": "^3.0.7", | ||
"eslint-config-standard": "^12.0.0", | ||
"eslint-plugin-es5": "^1.3.1", | ||
"eslint-plugin-import": "^2.14.0", | ||
"eslint-plugin-jest": "^22.1.2", | ||
"eslint-plugin-node": "^8.0.0", | ||
"eslint-plugin-prefer-let": "^1.0.1", | ||
"eslint-plugin-promise": "^4.0.1", | ||
"eslint-plugin-security": "^1.4.0", | ||
"eslint-plugin-standard": "^4.0.0", | ||
"jest": "^23.6.0" | ||
"eslint": "^6.1.0", | ||
"eslint-config-airbnb": "^18.0.1", | ||
"eslint-plugin-import": "^2.20.0", | ||
"eslint-plugin-jsx-a11y": "^6.2.3", | ||
"eslint-plugin-react": "^7.18.0", | ||
"eslint-plugin-react-hooks": "^1.7.0", | ||
"jest": "^25.1.0" | ||
}, | ||
"eslintConfig": { | ||
"extends": "eslint-config-postcss" | ||
"extends": "eslint-config-airbnb", | ||
"rules": { | ||
"no-use-before-define": [ | ||
"error", | ||
"nofunc" | ||
], | ||
"no-param-reassign": [ | ||
"error", | ||
{ | ||
"props": false | ||
} | ||
] | ||
} | ||
}, | ||
@@ -46,0 +52,0 @@ "jest": { |
@@ -13,5 +13,7 @@ # PostCSS Modules Tilda [![Build Status][ci-img]][ci] | ||
```css | ||
@import "module/module.css"; | ||
@value module from "module/module.css"; | ||
a { | ||
composes: module; | ||
composes: module; | ||
composes: selector from "module/module.css"; | ||
@@ -24,4 +26,6 @@ } | ||
```css | ||
@import "~module/module.css"; | ||
@value module from "~module/module.css"; | ||
a { | ||
a { | ||
composes: module; | ||
@@ -28,0 +32,0 @@ composes: selector from "~module/module.css"; |
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
4569
7
40
42