mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-06-14 11:52:32 +03:00
Implemented TS compilation
This commit is contained in:
parent
b65c40308d
commit
a2d9eb7aee
36
package-lock.json
generated
36
package-lock.json
generated
@ -515,15 +515,6 @@
|
|||||||
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
|
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/ramda": {
|
|
||||||
"version": "0.27.38",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.27.38.tgz",
|
|
||||||
"integrity": "sha512-tZoQ0lv1WKkrpBHemL8yCkI9p8kUk/1PSMwhl0eeyqMQjD+2ePUtVLV8PpNS9Kq3OktObwOx9I3k+HumxTviRg==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"ts-toolbelt": "^6.15.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@types/relateurl": {
|
"@types/relateurl": {
|
||||||
"version": "0.2.28",
|
"version": "0.2.28",
|
||||||
"resolved": "https://registry.npmjs.org/@types/relateurl/-/relateurl-0.2.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/relateurl/-/relateurl-0.2.28.tgz",
|
||||||
@ -536,6 +527,15 @@
|
|||||||
"integrity": "sha512-8k/67Z95Goa6Lznuykxkfhq9YU3l1Qe6LNZmwde1u7802a3x8v44oq0j91DICclxatTr0rNnhXx7+VTIetSrSQ==",
|
"integrity": "sha512-8k/67Z95Goa6Lznuykxkfhq9YU3l1Qe6LNZmwde1u7802a3x8v44oq0j91DICclxatTr0rNnhXx7+VTIetSrSQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@types/sass": {
|
||||||
|
"version": "1.16.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.16.0.tgz",
|
||||||
|
"integrity": "sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/uglify-js": {
|
"@types/uglify-js": {
|
||||||
"version": "3.9.0",
|
"version": "3.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.9.0.tgz",
|
||||||
@ -6626,12 +6626,6 @@
|
|||||||
"integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
|
"integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"ramda": {
|
|
||||||
"version": "0.27.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz",
|
|
||||||
"integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"read-pkg": {
|
"read-pkg": {
|
||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
||||||
@ -8814,12 +8808,6 @@
|
|||||||
"yn": "3.1.1"
|
"yn": "3.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ts-toolbelt": {
|
|
||||||
"version": "6.15.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz",
|
|
||||||
"integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"tsconfig-paths": {
|
"tsconfig-paths": {
|
||||||
"version": "3.9.0",
|
"version": "3.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz",
|
||||||
@ -8832,12 +8820,6 @@
|
|||||||
"strip-bom": "^3.0.0"
|
"strip-bom": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tslib": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"tsutils": {
|
"tsutils": {
|
||||||
"version": "3.20.0",
|
"version": "3.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz",
|
||||||
|
@ -50,11 +50,12 @@
|
|||||||
"@types/html-minifier": "^4.0.0",
|
"@types/html-minifier": "^4.0.0",
|
||||||
"@types/lunr": "^2.3.3",
|
"@types/lunr": "^2.3.3",
|
||||||
"@types/node": "^14.14.28",
|
"@types/node": "^14.14.28",
|
||||||
"@types/ramda": "^0.27.37",
|
|
||||||
"@types/resize-observer-browser": "^0.1.5",
|
"@types/resize-observer-browser": "^0.1.5",
|
||||||
|
"@types/sass": "^1.16.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.15.0",
|
"@typescript-eslint/eslint-plugin": "^4.15.0",
|
||||||
"@typescript-eslint/parser": "^4.15.0",
|
"@typescript-eslint/parser": "^4.15.0",
|
||||||
"autoprefixer": "10.2.4",
|
"autoprefixer": "^10.2.4",
|
||||||
|
"chokidar": "^3.5.1",
|
||||||
"cssnano": "^4.1.10",
|
"cssnano": "^4.1.10",
|
||||||
"esbuild": "^0.8.46",
|
"esbuild": "^0.8.46",
|
||||||
"eslint": "^7.20.0",
|
"eslint": "^7.20.0",
|
||||||
@ -71,7 +72,6 @@
|
|||||||
"postcss-inline-svg": "^5.0.0",
|
"postcss-inline-svg": "^5.0.0",
|
||||||
"postcss-svgo": "^4.0.2",
|
"postcss-svgo": "^4.0.2",
|
||||||
"preact": "^10.5.12",
|
"preact": "^10.5.12",
|
||||||
"ramda": "^0.27.1",
|
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"sass": "^1.32.6",
|
"sass": "^1.32.6",
|
||||||
"stylelint": "^13.9.0",
|
"stylelint": "^13.9.0",
|
||||||
@ -82,7 +82,6 @@
|
|||||||
"svgo": "^2.0.1",
|
"svgo": "^2.0.1",
|
||||||
"tiny-glob": "^0.2.8",
|
"tiny-glob": "^0.2.8",
|
||||||
"ts-node": "^9.1.1",
|
"ts-node": "^9.1.1",
|
||||||
"tslib": "^2.1.0",
|
|
||||||
"typescript": "^4.1.5"
|
"typescript": "^4.1.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -38,7 +38,7 @@ import { mkdir, resolve } from "../resolve"
|
|||||||
*
|
*
|
||||||
* @returns Transformed content
|
* @returns Transformed content
|
||||||
*/
|
*/
|
||||||
type CopyTransformFn = (content: string) => Promise<string> | string
|
type CopyTransformFn = (content: string) => Promise<string>
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ export function copy(
|
|||||||
? from(fs.copyFile(src, out))
|
? from(fs.copyFile(src, out))
|
||||||
: from(fs.readFile(src, "utf8"))
|
: from(fs.readFile(src, "utf8"))
|
||||||
.pipe(
|
.pipe(
|
||||||
switchMap(content => from(fn(content))),
|
switchMap(content => fn(content)),
|
||||||
switchMap(content => fs.writeFile(out, content))
|
switchMap(content => fs.writeFile(out, content))
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
@ -20,14 +20,16 @@
|
|||||||
* IN THE SOFTWARE.
|
* IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// import { build } from "esbuild"
|
|
||||||
import { minify as minhtml } from "html-minifier"
|
import { minify as minhtml } from "html-minifier"
|
||||||
import { concat } from "rxjs"
|
import { concat, merge } from "rxjs"
|
||||||
import { concatMap } from "rxjs/operators"
|
import { concatMap } from "rxjs/operators"
|
||||||
|
|
||||||
import { copyAll } from "./copy"
|
import { copyAll } from "./copy"
|
||||||
import { base, resolve } from "./resolve"
|
import { base, resolve } from "./resolve"
|
||||||
import { transformStyle } from "./transform"
|
import {
|
||||||
|
transformScript,
|
||||||
|
transformStyle
|
||||||
|
} from "./transform"
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------
|
||||||
* Program
|
* Program
|
||||||
@ -79,7 +81,7 @@ const assets$ = concat(
|
|||||||
copyAll("**/*.html", {
|
copyAll("**/*.html", {
|
||||||
src: "src",
|
src: "src",
|
||||||
out: base,
|
out: base,
|
||||||
fn: content => {
|
fn: async content => {
|
||||||
const metadata = require("../package.json")
|
const metadata = require("../package.json")
|
||||||
const banner =
|
const banner =
|
||||||
"{#-\n" +
|
"{#-\n" +
|
||||||
@ -113,15 +115,37 @@ const styles$ = resolve("**/[!_]*.scss", { cwd: "src" })
|
|||||||
.pipe(
|
.pipe(
|
||||||
concatMap(file => transformStyle({
|
concatMap(file => transformStyle({
|
||||||
src: `src/${file}`,
|
src: `src/${file}`,
|
||||||
out: `${base}/${file.replace(/\.scss$/, ".css")}`,
|
out: `${base}/${file.replace(/\.scss$/, ".css")}`
|
||||||
optimize: true // TODO: wrap with commander
|
|
||||||
}))
|
}))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/* Transform scripts with ESBuild */
|
||||||
|
const scripts$ = merge(
|
||||||
|
|
||||||
|
/* Transform application */
|
||||||
|
transformScript({
|
||||||
|
src: "src/assets/javascripts/index.ts",
|
||||||
|
out: `${base}/assets/javascripts/bundle.js`
|
||||||
|
}),
|
||||||
|
|
||||||
|
/* Transform application overrides */
|
||||||
|
transformScript({
|
||||||
|
src: "src/overrides/assets/javascripts/index.ts",
|
||||||
|
out: `${base}/overrides/assets/javascripts/bundle.js`
|
||||||
|
}),
|
||||||
|
|
||||||
|
/* Transform search worker */
|
||||||
|
transformScript({
|
||||||
|
src: "src/assets/javascripts/integrations/search/worker/main/index.ts",
|
||||||
|
out: `${base}/assets/javascripts/worker/search.js`
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
/* Compile everything */
|
/* Compile everything */
|
||||||
concat(
|
concat(
|
||||||
dependencies$,
|
dependencies$,
|
||||||
assets$,
|
assets$,
|
||||||
styles$
|
styles$,
|
||||||
|
scripts$
|
||||||
)
|
)
|
||||||
.subscribe()
|
.subscribe(console.log)
|
||||||
|
@ -55,7 +55,7 @@ export const base = "material2"
|
|||||||
* @param pattern - Pattern
|
* @param pattern - Pattern
|
||||||
* @param options - Options
|
* @param options - Options
|
||||||
*
|
*
|
||||||
* @returns Files
|
* @returns File observable
|
||||||
*/
|
*/
|
||||||
export function resolve(
|
export function resolve(
|
||||||
pattern: string, options?: ResolveOptions
|
pattern: string, options?: ResolveOptions
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
* IN THE SOFTWARE.
|
* IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { build } from "esbuild"
|
||||||
import * as fs from "fs/promises"
|
import * as fs from "fs/promises"
|
||||||
import * as path from "path"
|
import * as path from "path"
|
||||||
import postcss from "postcss"
|
import postcss from "postcss"
|
||||||
@ -27,6 +28,7 @@ import { Observable, defer, merge } from "rxjs"
|
|||||||
import {
|
import {
|
||||||
endWith,
|
endWith,
|
||||||
ignoreElements,
|
ignoreElements,
|
||||||
|
mapTo,
|
||||||
switchMap,
|
switchMap,
|
||||||
tap
|
tap
|
||||||
} from "rxjs/operators"
|
} from "rxjs/operators"
|
||||||
@ -45,7 +47,6 @@ import { base, mkdir } from "../resolve"
|
|||||||
interface TransformOptions {
|
interface TransformOptions {
|
||||||
src: string /* Source file */
|
src: string /* Source file */
|
||||||
out: string /* Target file */
|
out: string /* Target file */
|
||||||
optimize?: boolean /* Optimize assets */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------
|
||||||
@ -69,7 +70,7 @@ const root = new RegExp(`file://${path.resolve(".")}/`, "g")
|
|||||||
* @returns File observable
|
* @returns File observable
|
||||||
*/
|
*/
|
||||||
export function transformStyle(
|
export function transformStyle(
|
||||||
{ src, out, optimize }: TransformOptions
|
{ src, out }: TransformOptions
|
||||||
): Observable<string> {
|
): Observable<string> {
|
||||||
return defer(() => promisify(sass)({
|
return defer(() => promisify(sass)({
|
||||||
file: src,
|
file: src,
|
||||||
@ -92,7 +93,7 @@ export function transformStyle(
|
|||||||
],
|
],
|
||||||
encode: false
|
encode: false
|
||||||
}),
|
}),
|
||||||
...optimize ? [require("cssnano")] : []
|
require("cssnano")
|
||||||
])
|
])
|
||||||
.process(css, {
|
.process(css, {
|
||||||
from: src,
|
from: src,
|
||||||
@ -112,3 +113,25 @@ export function transformStyle(
|
|||||||
endWith(out)
|
endWith(out)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transform a script
|
||||||
|
*
|
||||||
|
* @param options - Options
|
||||||
|
*
|
||||||
|
* @returns File observable
|
||||||
|
*/
|
||||||
|
export function transformScript(
|
||||||
|
{ src, out }: TransformOptions
|
||||||
|
): Observable<string> {
|
||||||
|
return defer(() => build({
|
||||||
|
entryPoints: [src],
|
||||||
|
outfile: out,
|
||||||
|
bundle: true,
|
||||||
|
sourcemap: true,
|
||||||
|
minify: true
|
||||||
|
}))
|
||||||
|
.pipe(
|
||||||
|
mapTo(out)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user