Una configuración de acurrucado para ayudarlo a crear aplicaciones web modernas.
La configuración funciona extremadamente bien con las bibliotecas lit-html y lit-elemento. Quería compartirlo para que pueda usarlo también o construir sobre él.
create-rollup-config.js para usar rollup con características dulces, como, por ejemplo, las importaciones de SCSS, la generación de trabajadores de servicios con caja de trabajo, recarga en vivo, recursos de afrontamiento, fragmentación, treeschoking, mecanografiado, minificación de producción y compresión con Brotli y GZIP.create-karma-config.js para ayudar con la configuración de las pruebas de karmatsconfig.json para configurar su mecanografiadotslint.json para configurar su pelusatypings.d.ts para configurar sus tipos.browserslistrc para configurar cómo se transpilan sus archivos.gitignore que puede usar como inspiración para su propio archivo .gitignorerollup-plugin-compress : un complemento de rollo que comprime los archivos en el paquete después de la construcciónrollup-plugin-copy : un complemento de rollo que copia los recursos de una ubicación a otrarollup-plugin-html-template : un complemento de rollo que inyecta los puntos de entrada del paquete en un archivo HTMLrollup-plugin-import-styles : un complemento de rollo que permite importar archivos de estilo utilizando postcssrollup-plugin-live-reload : un complemento de rollup que se realiza en vivo a medida que cambiarollup-plugin-minify-lit-html : un complemento de rollo que minifica plantillas de html lit-htmlrollup-plugin-replace : un complemento de rollo que reemplaza una importación con otra importaciónrollup-plugin-workbox : un complemento de rollo que utiliza la caja de trabajo para generar un trabajador de serviciorollup-plugin-budget : un complemento de rollo que compara los tamaños de los archivos con un presupuesto especificadorollup-plugin-clean : un complemento de rollo que limpia los directorios antes de la reconstrucción rollup.config.ts.eslintrc.jsontsconfig.json.browserslistrckarma.conf.jspackage.jsonprettier.config.jstypings.d.ts !La forma más rápida de comenzar es usar la CLI. Ejecute el siguiente comando para configurar su proyecto desde cero. Si elige usar la CLI, puede omitir el resto de los pasos en este archivo ReadMe.
$ npm init web - config new < dir >Para usarlo en su proyecto, puede instalarlo así.
$ npm i @ appnest / web - config -- D rollup.config.tsAquí hay un ejemplo sobre cómo podría verse su archivo de configuración de rollo:
import { resolve , join } from "path" ;
import pkg from "./package.json" ;
import {
defaultExternals ,
defaultOutputConfig ,
defaultPlugins ,
defaultProdPlugins ,
defaultServePlugins ,
isLibrary ,
isProd ,
isServe
} from "@appnest/web-config" ;
const folders = {
dist : resolve ( __dirname , "dist" ) ,
src : resolve ( __dirname , "src/demo" ) ,
src_assets : resolve ( __dirname , "src/demo/assets" ) ,
dist_assets : resolve ( __dirname , "dist/assets" )
} ;
const files = {
main : join ( folders . src , "main.ts" ) ,
src_index : join ( folders . src , "index.html" ) ,
dist_index : join ( folders . dist , "index.html" )
} ;
export default {
input : {
main : files . main
} ,
output : [
defaultOutputConfig ( {
dir : folders . dist ,
format : "esm"
} )
] ,
plugins : [
... defaultPlugins ( {
copyConfig : {
resources : [ [ folders . src_assets , folders . dist_assets ] ] ,
} ,
cleanerConfig : {
targets : [
folders . dist
]
} ,
htmlTemplateConfig : {
template : files . src_index ,
target : files . dist_index ,
include : / main(-.*)?.js$ /
} ,
importStylesConfig : {
globals : [ "main.scss" ]
}
} ) ,
// Serve
... ( isServe ? [
... defaultServePlugins ( {
dist : folders . dist
} )
] : [ ] ) ,
// Production
... ( isProd ? [
... defaultProdPlugins ( {
dist : folders . dist
} )
] : [ ] )
] ,
treeshake : isProd ,
context : "window"
} .eslintrc.json {
"extends" : " ./node_modules/@appnest/web-config/eslint.js "
}tsconfig.json {
"extends" : " ./node_modules/@appnest/web-config/tsconfig.json "
}.browserslistrc Las herramientas que transportan su código están utilizando browserslist para descubrir qué es compatible. Tu .browserslistrc podría verse así.
last 2 Chrome versions
last 2 Safari versions
last 2 Firefox versions
karma.conf.js const { defaultResolvePlugins , defaultKarmaConfig } = require ( "@appnest/web-config" ) ;
module . exports = ( config ) => {
config . set ( {
... defaultKarmaConfig ( {
rollupPlugins : defaultResolvePlugins ( )
} ) ,
basePath : "src" ,
logLevel : config . LOG_INFO
} ) ;
} ; package.json Aquí un ejemplo sobre qué scripts podría agregar a su archivo package.json .
{
...
scripts: {
"b:dev": "rollup -c --environment NODE_ENV:dev",
"b:prod": "rollup -c --environment NODE_ENV:prod",
"s:dev": "rollup -c --watch --environment NODE_ENV:dev",
"s:prod": "rollup -c --watch --environment NODE_ENV:prod",
"s": "npm run s:dev"
...
}
...
}
prettier.config.js module . exports = {
... require ( "../node_modules/@appnest/web-config/rettier.config.js" )
} ; typings.d.ts !Esto es para hacer que TypeScript no se queje de las importaciones SCSS, CSS y JSON.
/// <reference path="node_modules/@appnest/web-config/typings.d.ts" />Paso 1: importe su hoja de estilo utilizando la sintaxis de importación de ES6
import "./main.scss" ;Paso 2: incluya el nombre de la hoja de estilo en su configuración de rollup
export default {
...
defaultPlugins ( {
...
importStylesConfig : {
globals : [ "main.scss" ]
} ,
...
} ) ,
...
} import css from "./my-component.scss" ; | Andreas Mehlsen | ¿Tú? |
Licenciado bajo MIT.