UNPKG

1.76 kBJavaScriptView Raw
1/**
2 * node-sass で neos-normalize.scss をトランスパイルすると
3 *
4 * - 勝手に Charset 指定が書かれる
5 * - コメント間の空行が削られる
6 * - 0 以上 1 未満の小数が .5 とならず 0.5 と出力される
7 *
8 * といった不備があり、元ファイルとの嫌な差分が出るので、泥臭く修正することにする
9 * この修正で neos-normalize.scss と neos-normalize.css の差分は SCSS 変数の展開部分だけになる
10 */
11
12const fs = require('fs');
13
14// 編集対象ファイル
15const filePath = './neos-normalize.css';
16
17// 整形後のテキストを控えておく配列
18const beautifiedTextArray = [];
19
20// テキストを読み込む
21const originalText = fs.readFileSync(filePath, 'utf-8');
22
23// 1行ごとに処理する
24originalText.split('\n').forEach((line) => {
25 // Charset 指定の行は消すため何もしない
26 if(line === '@charset "UTF-8";') {
27 return;
28 }
29
30 // ブロック開始コメントの上に空行を付ける
31 if(line === '/* ==================================================') {
32 beautifiedTextArray.push('');
33 }
34
35 // なぜか 0 が付く行があるので修正する (figure 要素の border-left)
36 if(line.includes('0.5em')) {
37 line = line.replace('0.5em', '.5em');
38 }
39
40 // 当該行を出力する
41 beautifiedTextArray.push(line);
42
43 // 開始コメント行とブロック終了コメントの下に空行を付ける
44 if(line.startsWith('/*!') || line === ' * ================================================== */') {
45 beautifiedTextArray.push('');
46 }
47});
48
49// LF で結合する
50const beautifiedText = beautifiedTextArray.join('\n');
51
52// 編集対象ファイルに書き直す
53fs.writeFileSync(filePath, beautifiedText);