zhouyang.xie 89146efd70 2.19.0 Vue 总览页签迁移 + 呈现对拍门: Overview.vue(逐块搬 KPI/需关注/状态条) + lib/render.ts 口径同源 + i18n/zh.ts(105 键取自现网语言包) + tools/render_parity.mjs(jsdom 跑旧页面 beforeParse 装 fetch 桩 vs Vue SSR, 11 组锚点全一致) + npm run parity/build:ssr; 设计说明 §3.6 迁移进度; 文档/版本表同步 1 week geleden
..
CHANGELOG.md 89146efd70 2.19.0 Vue 总览页签迁移 + 呈现对拍门: Overview.vue(逐块搬 KPI/需关注/状态条) + lib/render.ts 口径同源 + i18n/zh.ts(105 键取自现网语言包) + tools/render_parity.mjs(jsdom 跑旧页面 beforeParse 装 fetch 桩 vs Vue SSR, 11 组锚点全一致) + npm run parity/build:ssr; 设计说明 §3.6 迁移进度; 文档/版本表同步 1 week geleden
LICENSE.md 89146efd70 2.19.0 Vue 总览页签迁移 + 呈现对拍门: Overview.vue(逐块搬 KPI/需关注/状态条) + lib/render.ts 口径同源 + i18n/zh.ts(105 键取自现网语言包) + tools/render_parity.mjs(jsdom 跑旧页面 beforeParse 装 fetch 桩 vs Vue SSR, 11 组锚点全一致) + npm run parity/build:ssr; 设计说明 §3.6 迁移进度; 文档/版本表同步 1 week geleden
README.md 89146efd70 2.19.0 Vue 总览页签迁移 + 呈现对拍门: Overview.vue(逐块搬 KPI/需关注/状态条) + lib/render.ts 口径同源 + i18n/zh.ts(105 键取自现网语言包) + tools/render_parity.mjs(jsdom 跑旧页面 beforeParse 装 fetch 桩 vs Vue SSR, 11 组锚点全一致) + npm run parity/build:ssr; 设计说明 §3.6 迁移进度; 文档/版本表同步 1 week geleden
package.json 89146efd70 2.19.0 Vue 总览页签迁移 + 呈现对拍门: Overview.vue(逐块搬 KPI/需关注/状态条) + lib/render.ts 口径同源 + i18n/zh.ts(105 键取自现网语言包) + tools/render_parity.mjs(jsdom 跑旧页面 beforeParse 装 fetch 桩 vs Vue SSR, 11 组锚点全一致) + npm run parity/build:ssr; 设计说明 §3.6 迁移进度; 文档/版本表同步 1 week geleden

README.md

CSS Tokenizer for CSS

npm version Build Status Discord

Implemented from : https://drafts.csswg.org/css-syntax/

API

Read the API docs

Usage

Add CSS Tokenizer to your project:

npm install @csstools/css-tokenizer --save-dev
import { tokenize } from '@csstools/css-tokenizer';

const myCSS =  `@media only screen and (min-width: 768rem) {
	.foo {
		content: 'Some content!' !important;
	}
}
`;

const tokens = tokenize({
	css: myCSS,
});

console.log(tokens);

Or use the streaming interface:

import { tokenizer, TokenType } from '@csstools/css-tokenizer';

const myCSS = `@media only screen and (min-width: 768rem) {
	.foo {
		content: 'Some content!' !important;
	}
}
`;

const t = tokenizer({
	css: myCSS,
});

while (true) {
	const token = t.nextToken();
	if (token[0] === TokenType.EOF) {
		break;
	}

	console.log(token);
}

Options

{
	onParseError?: (error: ParseError) => void
}

onParseError

The tokenizer is forgiving and won't stop when a parse error is encountered.

To receive parsing error information you can set a callback.

import { tokenizer, TokenType } from '@csstools/css-tokenizer';

const t = tokenizer({
	css: '\\',
}, { onParseError: (err) => console.warn(err) });

while (true) {
	const token = t.nextToken();
	if (token[0] === TokenType.EOF) {
		break;
	}
}

Parser errors will try to inform you where in the tokenizer logic the error happened. This tells you what kind of error occurred.

Order of priorities

  1. specification compliance
  2. correctness
  3. reliability
  4. tokenizing and serializing must round trip losslessly
  5. exposing useful aspects about the source code
  6. runtime performance
  7. package size