Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
@qiniu/typed-less-modules
Advanced tools
Generate TypeScript definitions (.d.ts
) files for CSS Modules that are written in LESS (.less
).
typed-less-modules 用于将 .less
转换为对应的 .d.ts
TypeScript 类型声明文件。
For example, given the following LESS:
@import "variables";
.text {
color: @blue;
&-highlighted {
color: @yellow;
}
}
The following type definitions will be generated:
export const text: string;
export const textHighlighted: string;
Run with npm package runner:
npx tlm src
Or, install globally:
yarn global add typed-less-modules
tlm src
Or, install and run as a devDependency
:
yarn add -D typed-less-modules
yarn tlm src
For all possible commands, run tlm --help
.
The only required argument is the directory where all LESS files are located (config.pattern
). Running tlm src
will search for all files matching src/**/*.less
. This can be overridden by providing a glob pattern instead of a directory. For example, tlm src/*.less
--watch
(-w
)boolean
false
tlm src --watch
Watch for files that get added or are changed and generate the corresponding type definitions.
--ignoreInitial
boolean
false
tlm src --watch --ignoreInitial
Skips the initial build when passing the watch flag. Use this when running concurrently with another watch, but the initial build should happen first. You would run without watch first, then start off the concurrent runs after.
--ignore
string[]
[]
tlm src --watch --ignore "**/secret.less"
A pattern or an array of glob patterns to exclude files that match and avoid generating type definitions.
--includePaths
(-i
)string[]
[]
tlm src --includePaths src/core
An array of paths to look in to attempt to resolve your @import
declarations. This example will search the src/core
directory when resolving imports.
--aliases
(-a
)object
{}
tlm src --aliases.~some-alias src/core/variables
An object of aliases to map to their corresponding paths. This example will replace any @import '~alias'
with @import 'src/core/variables'
.
--nameFormat
(-n
)"camel" | "kebab" | "param" | "dashes" | "none"
"camel"
tlm src --nameFormat camel
The class naming format to use when converting the classes to type definitions.
App-Logo
=> appLogo
.App-Logo
=> app-logo
(all lower case with '-' separators).App
=> App
, App-Logo
=> appLogo
. Matches the webpack css-loader camelCase 'dashesOnly' option.--exportType default
when using --nameFormat none
as any classes with a -
in them are invalid as normal variable names).
Note: If you are using create-react-app v2.x and have NOT ejected, --nameFormat none --exportType default
matches the class names that are generated in CRA's webpack's config.--listDifferent
(-l
)boolean
false
tlm src --listDifferent
List any type definition files that are different than those that would be generated. If any are different, exit with a status code 1
.
--exportType
(-e
)"named" | "default"
"named"
tlm src --exportType default
The export type to use when generating type definitions.
named
Given the following LESS:
.text {
color: blue;
&-highlighted {
color: yellow;
}
}
The following type definitions will be generated:
export const text: string;
export const textHighlighted: string;
default
Given the following LESS:
.text {
color: blue;
&-highlighted {
color: yellow;
}
}
The following type definitions will be generated:
export type Styles = {
text: string;
textHighlighted: string;
};
export type ClassNames = keyof Styles;
declare const styles: Styles;
export default styles;
This export type is useful when using kebab (param) cased class names since variables with a -
are not valid variables and will produce invalid types or when a class name is a TypeScript keyword (eg: while
or delete
). Additionally, the Styles
and ClassNames
types are exported which can be useful for properly typing variables, functions, etc. when working with dynamic class names.
--exportTypeName
string
"ClassNames"
tlm src --exportType default --exportTypeName ClassesType
Customize the type name exported in the generated file when --exportType
is set to "default"
.
Only default exports are affected by this command. This example will change the export type line to:
export type ClassesType = keyof Styles;
--exportTypeInterface
string
"Styles"
tlm src --exportType default --exportTypeInterface IStyles
Customize the interface name exported in the generated file when --exportType
is set to "default"
.
Only default exports are affected by this command. This example will change the export interface line to:
export type IStyles = {
// ...
};
--quoteType
(-q
)"single" | "double"
"single"
tlm src --exportType default --quoteType double
Specify a quote type to match your TypeScript configuration. Only default exports are affected by this command. This example will wrap class names with double quotes (").
--logLevel
(-l
)"verbose" | "error" | "info" | "silent"
"verbose"
tlm src --logLevel error
Sets verbosity level of console output.
--config
(-c
)string
tlm.config.js
tlm --config ./path/to/tlm.config.js
指定配置文件的路径,配置文件可代替所有的命令行参数,默认读取 process.cwd() + tlm.config.js
文件。
// tlm.config.js
const path = require("path");
module.exports = {
pattern: "./src/**/*.m.less",
watch: true,
// ...
// 上述所有配置均可用
aliases: {
// 映射至多路径
"~": [
path.resolve(__dirname, "node_modules"),
path.resolve(__dirname, "src")
],
// 映射至单路径
"@": path.resolve(__dirname, "some-dir"),
// 自定义映射规则
"abc-module"(filePath) {
return filePath.replace("abc-module", "xxx-path");
}
},
// less.render options 参数
lessRenderOptions: {
javascriptEnabled: true
}
};
verbose
Print all messages
error
Print only errors
info
Print only some messages
silent
Print nothing
For examples, see the examples
directory:
This package was forked from typed-scss-modules.
This package is currently used as a CLI. There are also packages that generate types as a webpack loader.
FAQs
TypeScript type definition generator for LESS CSS Modules
The npm package @qiniu/typed-less-modules receives a total of 0 weekly downloads. As such, @qiniu/typed-less-modules popularity was classified as not popular.
We found that @qiniu/typed-less-modules demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.