unplugin-preprocessor-directives
- Version 1.2.0
- Published
- 246 kB
- 5 dependencies
- MIT license
Install
npm i unplugin-preprocessor-directivesyarn add unplugin-preprocessor-directivespnpm add unplugin-preprocessor-directivesOverview
<img src="assets/logo.svg" alt="logo" width="100" height="100" align="right" />
Index
Variables
Functions
Classes
Interfaces
Type Aliases
Variables
variable comments
const comments: Comment[];variable ifDirective
const ifDirective: Directive<IfToken, IfStatement>;variable includeDirective
const includeDirective: Directive<IncludeToken, IncludeStatement>;variable MessageDirective
const MessageDirective: Directive<MessageToken, MessageStatement>;variable theDefineDirective
const theDefineDirective: Directive<DefineToken, DefineStatement>;variable unplugin
const unplugin: unplugin0.UnpluginInstance<UserOptions, boolean>;variable unpluginFactory
const unpluginFactory: UnpluginFactory<UserOptions>;Functions
function createProgramNode
createProgramNode: (body?: SimpleNode[]) => ProgramNode;function defineDirective
defineDirective: <T extends SimpleToken, N extends SimpleNode>( directive: Directive<T, N>) => Directive<T, N>;function findComment
findComment: (type: string) => Comment;function isComment
isComment: (line: string) => boolean;function parseComment
parseComment: (line: string) => { type: string | undefined; content: string };function resolveConditional
resolveConditional: (test: string, env?: NodeJS.ProcessEnv) => boolean;function resolveOptions
resolveOptions: (options?: UserOptions) => Required<UserOptions>;function simpleMatchToken
simpleMatchToken: <T = SimpleToken>( comment: string, regex: RegExp) => T | undefined;function sortUserDirectives
sortUserDirectives: ( directives: ObjectDirective[]) => [ObjectDirective[], ObjectDirective[], ObjectDirective[]];Classes
class CodeGenerator
class CodeGenerator extends Generator {}纯代码生成器 从 AST 节点生成代码字符串,不依赖 MagicString
method append
append: (code: string) => void;添加代码片段到生成结果
method generate
static generate: ( node: SimpleNode, generates?: (Generate | undefined)[], options?: CodeGeneratorOptions) => string;静态方法:从 AST 节点生成代码
method handleCodeStatement
protected handleCodeStatement: (node: SimpleNode) => void;处理 CodeStatement 节点
method handleGeneratorResult
protected handleGeneratorResult: (node: SimpleNode, result: string) => void;处理自定义生成器返回的结果
method handleKeepNode
protected handleKeepNode: (node: SimpleNode) => void;保留节点(用于 unhandled: 'keep' 策略)
class Context
class Context {}constructor
constructor(options?: UserOptions);property directives
directives: ObjectDirective<SimpleToken, SimpleNode>[];property env
env: Record<string, any>;property filter
filter: (id: string) => boolean;property generates
generates: Generate[];property lexers
lexers: Lex<SimpleToken>[];property logger
logger: Logger;property options
options: Required<UserOptions>;property parsers
parsers: Parse<SimpleToken, SimpleNode>[];property transforms
transforms: Transform<SimpleNode, SimpleNode>[];method loadEnv
loadEnv: (mode?: string) => Record<string, string>;method transform
transform: (code: string, id: string) => string | undefined;method transformWithMap
transformWithMap: ( code: string, id: string) => { map: magic_string0.SourceMap; code: string };class Generator
abstract class Generator {}生成器基类 提供通用的 AST 遍历和节点处理逻辑
constructor
constructor( node: SimpleNode, generates?: Generate[], options?: GeneratorOptions);property generates
readonly generates: Generate[];property node
readonly node: SimpleNode;property options
protected readonly options: GeneratorOptions;method handleCodeStatement
protected abstract handleCodeStatement: (node: SimpleNode) => void;处理 CodeStatement 节点 子类需要实现此方法
method handleGeneratorResult
protected abstract handleGeneratorResult: ( node: SimpleNode, result: string) => void;处理自定义生成器的结果 子类需要实现此方法
method handleKeepNode
protected abstract handleKeepNode: (node: SimpleNode) => void;保留节点(用于 unhandled: 'keep' 策略) 子类需要实现此方法
method handleUnprocessedNode
protected handleUnprocessedNode: (node: SimpleNode) => void;处理未被任何生成器处理的节点
method walk
walk: (node: SimpleNode) => void;遍历 AST 节点
class Lexer
class Lexer {}class MsGenerator
class MsGenerator extends Generator {}基于 MagicString 的代码转换器 用于在现有源码基础上进行修改和删除操作
constructor
constructor( node: SimpleNode, generates: Generate[], s: MagicString, options?: GeneratorOptions);property s
readonly s: MagicString;method generate
static generate: ( node: SimpleNode, generates: (Generate | undefined)[] | undefined, s: MagicString, options?: GeneratorOptions) => void;静态方法:基于 MagicString 转换代码
Parameter node
AST 节点
Parameter generates
生成器函数数组
Parameter s
MagicString 实例
Parameter options
选项
method handleCodeStatement
protected handleCodeStatement: (node: SimpleNode) => void;处理 CodeStatement 节点
method handleGeneratorResult
protected handleGeneratorResult: (node: SimpleNode, result: string) => void;处理自定义生成器返回的结果
method handleKeepNode
protected handleKeepNode: (node: SimpleNode) => void;保留节点(用于 unhandled: 'keep' 策略)
method keep
keep: (node: SimpleNode) => void;method replace
replace: (node: SimpleNode, code: string) => void;class Parser
class Parser {}constructor
constructor(tokens: SimpleToken[], parsers?: Parse<SimpleToken, SimpleNode>[]);property ast
ast: ProgramNode;property current
current: number;property parsers
parsers: Parse<SimpleToken, SimpleNode>[];property tokens
tokens: SimpleToken[];method parse
static parse: (tokens: SimpleToken[], parsers?: Parse[]) => ProgramNode;method walk
walk: () => | CodeStatement | { comment: string; type: string; start: number; end: number };Interfaces
interface CodeGeneratorOptions
interface CodeGeneratorOptions extends GeneratorOptions {}interface CodeStatement
interface CodeStatement extends SimpleNode {}interface CodeToken
interface CodeToken extends SimpleToken {}interface Comment
interface Comment {}interface DefineStatement
interface DefineStatement extends SimpleNode {}interface DefineToken
interface DefineToken extends SimpleToken {}interface FunctionDirective
interface FunctionDirective<T = SimpleToken, N = SimpleNode> {}call signature
(context: Context): ObjectDirective<T, N>;interface GeneratorOptions
interface GeneratorOptions {}property unhandled
unhandled?: UnhandledPolicy;interface IfStatement
interface IfStatement extends SimpleNode {}property alternate
alternate: SimpleNode[];property consequent
consequent: SimpleNode[];property kind
kind: IfToken['type'];property test
test: string;property type
type: 'IfStatement';interface IfToken
interface IfToken extends SimpleToken {}interface IncludeStatement
interface IncludeStatement extends SimpleNode {}property sourceFile
sourceFile?: string;property type
type: 'IncludeStatement';property value
value: string;interface IncludeToken
interface IncludeToken extends SimpleToken {}interface MessageStatement
interface MessageStatement extends SimpleNode {}interface MessageToken
interface MessageToken extends SimpleToken {}interface MsGeneratorOptions
interface MsGeneratorOptions extends GeneratorOptions {}interface ObjectDirective
interface ObjectDirective<T = SimpleToken, N = SimpleNode> {}Represents an object-based directive configuration for preprocessing.
T - The type of token produced by the lexer, defaults to SimpleToken N - The type of AST node produced by the parser, defaults to SimpleNode
{('pre' | 'post')} [enforce] - Optional enforcement phase for when the directive should be applied {Lex} lex - Lexical analyzer function that tokenizes the input {Parse<T, N>} parse - Parser function that converts tokens into AST nodes {Transform} transform - Transformation function that modifies AST nodes {Generate} generate - Code generation function that produces the final output
interface Options
interface Options {}property cwd
cwd: string;property directives
directives: Directive[];property exclude
exclude: FilterPattern;property include
include: FilterPattern;interface ProgramNode
interface ProgramNode extends SimpleNode {}interface SimpleNode
interface SimpleNode {}property comment
comment?: string;property end
end?: number;property start
start?: number;property type
type: string;index signature
[x: string]: any;interface SimpleToken
interface SimpleToken {}interface UserOptions
interface UserOptions extends Partial<Options> {}Type Aliases
type Directive
type Directive<T = SimpleToken, N = SimpleNode> = | ObjectDirective<T, N> | FunctionDirective<T, N>;type Generate
type Generate = ( this: Generator, ast: SimpleNode, comment?: Comment) => string | void;type Lex
type Lex<T = SimpleToken> = (this: Lexer, currentLine: string) => T | void;type Parse
type Parse<T = SimpleToken, N = SimpleNode> = ( this: Parser, currentToken: T) => N | void;type Transform
type Transform<N = SimpleNode, ResultN = SimpleNode> = ( this: Transformer, currentNode: N) => ResultN | void;Package Files (2)
Dependencies (5)
Dev Dependencies (18)
Peer Dependencies (8)
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/unplugin-preprocessor-directives.
- Markdown[](https://www.jsdocs.io/package/unplugin-preprocessor-directives)
- HTML<a href="https://www.jsdocs.io/package/unplugin-preprocessor-directives"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 5023 ms. - Missing or incorrect documentation? Open an issue for this package.
