-
-
Save brettinternet/7d6429824f51fc122cce7e5cfbc8303f to your computer and use it in GitHub Desktop.
Rollup Plugin: Pug
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"license": "UNLICENSED", | |
"dependencies": { | |
"fastify": "^3.9.2", | |
"fastify-cookie": "^5.1.0", | |
"fastify-sensible": "^3.1.0", | |
"google-auth-library": "^6.1.3", | |
"lodash": "^4.17.20", | |
"pug": "^3.0.0", | |
"pug-runtime": "^3.0.0" | |
}, | |
"devDependencies": { | |
"@babel/core": "^7.11.6", | |
"@babel/preset-env": "^7.11.5", | |
"@babel/preset-typescript": "^7.10.4", | |
"@rollup/plugin-auto-install": "^2.1.0", | |
"@rollup/plugin-babel": "^5.2.1", | |
"@rollup/plugin-json": "^4.1.0", | |
"@rollup/plugin-node-resolve": "^11.0.1", | |
"@rollup/plugin-replace": "^2.3.4", | |
"@rollup/plugin-run": "^2.0.2", | |
"@types/jest": "^26.0.19", | |
"@types/node": "^14", | |
"@types/pug": "^2.0.4", | |
"builtin-modules": "^3.1.0", | |
"dotenv": "^8.2.0", | |
"jest": "^26.6.3", | |
"pino-pretty": "^4.3.0", | |
"pkg-dir": "^5.0.0", | |
"rollup": "^2.35.1", | |
"rollup-plugin-node-externals": "^2.2.0", | |
"typescript": "^4.0.3" | |
}, | |
"scripts": { | |
"dev": "rollup -cw --watch.buildDelay 200", | |
"build": "rollup -c", | |
"test": "jest" | |
}, | |
"jest": { | |
"testEnvironment": "node", | |
"bail": true, | |
"verbose": true | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Pug from 'pug' | |
import {promises as FileSystem} from 'fs' | |
import pkgDir from 'pkg-dir' | |
import Path from 'path' | |
export default (options = {debug: false}) => ({ | |
name: 'pug', | |
async load(absPath) { | |
if(!absPath.endsWith('.pug')) return null | |
const source = await FileSystem.readFile(absPath, 'utf8') | |
const filename = Path.relative(await pkgDir(), absPath) | |
const fn = Pug.compile(source, { | |
filename: filename, | |
inlineRuntimeFunctions: false, | |
compileDebug: !!options.debug, | |
debug: false, | |
pretty: false, | |
}) | |
return { | |
code: `import pug from 'pug-runtime';\n\n${fn};\n\nexport default template`, | |
moduleSideEffects: false, | |
} | |
} | |
}) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import babel from '@rollup/plugin-babel'; | |
import nodeResolve from '@rollup/plugin-node-resolve'; | |
import nodeExternals from 'rollup-plugin-node-externals' | |
import * as tsconfig from './tsconfig.json'; | |
import json from '@rollup/plugin-json'; | |
import run from '@rollup/plugin-run'; | |
import auto from '@rollup/plugin-auto-install'; | |
import replace from '@rollup/plugin-replace'; | |
import pug from './rollup-plugins/rollup-plugin-pug' | |
const extensions = ['.ts'] | |
const isWatch = process.env.ROLLUP_WATCH === 'true' | |
const isDev = process.env.NODE_ENV === 'development' | |
const debug = isWatch || isDev | |
export default { | |
input: tsconfig.files, | |
plugins: [ | |
nodeExternals({ | |
builtins: true, | |
deps: true, | |
devDeps: false, | |
peerDeps: true, | |
optDeps: false, | |
}), | |
json(), | |
pug({ | |
debug: debug, | |
}), | |
babel({ | |
include: 'src/**', | |
extensions, | |
comments: false, | |
babelHelpers: 'bundled', // https://github.com/rollup/plugins/tree/master/packages/babel#babelhelpers | |
}), | |
nodeResolve({ | |
extensions | |
}), | |
replace({ | |
'process.env.NODE_ENV': process.env.NODE_ENV, | |
__DEV__: isWatch || isDev, | |
}), | |
isDev && auto({ | |
manager: 'yarn', | |
pkgFile: `${__dirname}/package.json` | |
}), | |
isWatch && run({ | |
execArgv: ['-r', 'dotenv/config', '--enable-source-maps'] | |
}), | |
], | |
output: { | |
dir: 'dist', | |
format: 'cjs', | |
sourcemap: debug, | |
inlineDynamicImports: true, | |
}, | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment