0.10.0 • Published 4 years ago

xes-webpack-core v0.10.0

Weekly downloads
82
License
MIT
Repository
github
Last release
4 years ago

Xes Webpack Configuration

This library contains helpers for configuring webpack and karma via set of parameters in package.json apps configuration field.

Documentation

Configuration via package.json

You can provide application configuration via package.json apps param:

paramdefaultdescription
package.apps.appName.rootDirsrcdirectory (relative to project root) where all source code and other assets resides
package.apps.appName.externalDirs[]additional directories outside of package.apps.[appName].rootDir in which we have source files that need to be tested or translated
package.apps.appName.outDirdistdirectory (relative to project root) in which to put builded application
package.apps.appName.main'main.js'entry points to your application (relative to package.apps.[appName].rootDir)
package.apps.appName.moduleImportPaths''list of paths (relative to project root) on which to look for imported modules when calling import or require directives
package.apps.appName.test'main.test.js'entry point for tests (relative to package.apps.[appName].rootDir)
package.apps.appName.assets'assets'all asset and resource you want to move to build assets directory (you can use glob patterns or just link to directory) (relative to package.apps.[appName].rootDir)
package.apps.appName.fonts'fonts'all fonts resource you want to move to build fonts directory (you can use glob patterns or just link to directory)
package.apps.appName.styles'styles/styles.scss'all stylesheets you want to use as entry points
package.apps.appName.stylesImportPaths'./styles'list of paths (relative to package.apps.[appName].rootDir) on which to look when importing stylesheet via @import
package.apps.appName.vendor[]all vendor scripts you want to push to vendor bundle
package.apps.appName.templateindex.htmlhtml template that you want to use as template for website
package.apps.appName.templateData{}html template is handled by ejs loader so you can put here additional data that will be passed to htmlWebpackPlugin.options.data you can also access package.json from htmlWebpackPlugin.options.packageConfig
package.apps.appName.languages'en'list of languages that will be used by application
package.apps.appName.localesDir'locales'directory for storing translations (relative to package.apps.[appName].rootDir)

Source code phrase replacement

If anywhere in you code exist one of those phrases it will be replaced with data injected via webpack.DefinePlugin

phrasetypedefaultmeaning
process.env.DEVELOPMENTbooleanproject was build with development flag --env.dev
process.env.PRODUCTIONbooleanproject was build with production flag --env.prod
process.env.PACKAGEobjectcontents of package.json
process.env.APPobjectapplication build configuration resolved from build context
process.env.APP.rootDirstringsrcpackage.apps.[appName].rootDir
process.env.APP.externalDirsstring[][]package.apps.[appName].externalDirs
process.env.APP.outDirstringdistpackage.apps.[appName].outDir
process.env.APP.rootPathstringresolved system path to package.apps.[appName].rootDir
process.env.APP.externalPathsstring[][]resolved system path to package.apps.[appName].externalDirs
process.env.APP.outPathstringresolved system path to package.apps.[appName].outDir
process.env.APP.mainstring[]application entry scripts defined in package.apps.[appName].main
process.env.APP.teststringapplication test entry script defined in package.apps.[appName].test
process.env.APP.assetsstring[]assets defined in package.apps.[appName].assets
process.env.APP.fontsstring[]'./fonts'fonts defined in package.apps.[appName].fonts
process.env.APP.stylesstring[]'./styles/styles.scss'styles entry points defined in package.apps.[appName].styles
process.env.APP.stylesImportPathsstring[]'./styles'styles lookup paths package.apps.[appName].stylesImportPaths
process.env.APP.vendorstring[]vendor scripts defined in package.apps.[appName].vendor
process.env.APP.templatestringindex.htmlmain template name
process.env.APP.templateDatastringdata injected into template htmlWebpackPlugin.options.data
process.env.LANGUAGESstring[]'en'languages provided via package.apps.[appName].languages
process.env.LOCALES_DIRstring'locales'directory name for storing translation files package.apps.[appName].localesDir

process.env won't have those phrases listed as its params when trying to call it after build. So it secure, in sense that you can use only what you really need.

Additional environmental configuration via .env file

If you need to add any secret configuration to your project you can use similar proccess of replacing source code as above with variables provided in .env file. For example:

file: .env

SOME_SECRET=secret value

and then anywhere in javascript you can use it like this:

file: src/some/script/path/script.js

const secret = process.env.SOME_SECRET;

.env file should be excluded from you repository via .gitignore.

@babel/code-frame@babel/core@babel/plugin-proposal-class-properties@babel/plugin-proposal-decorators@babel/plugin-proposal-json-strings@babel/plugin-proposal-object-rest-spread@babel/plugin-syntax-dynamic-import@babel/plugin-syntax-import-meta@babel/plugin-syntax-json-strings@babel/preset-env@babel/preset-react@babel/preset-typescript@types/ajv@types/clean-webpack-plugin@types/copy-webpack-plugin@types/dotenv@types/dotenv-webpack@types/enzyme-adapter-react-16@types/html-webpack-plugin@types/istanbul@types/jasmine-enzyme@types/karma-coverage@types/mini-css-extract-plugin@types/mkdirp@types/optimize-css-assets-webpack-plugin@types/path-exists@types/react@types/react-dom@types/react-test-renderer@types/uglifyjs-webpack-plugin@types/webpack@types/webpack-bundle-analyzer@types/webpack-mergeajvbabel-loaderbabel-plugin-importbootstrap-sasschalkchunk-progress-webpack-pluginclean-webpack-plugincopy-webpack-plugincoverallscss-loaderdotenvdotenv-webpackejs-loaderfile-loaderfont-awesomegettext-extractorhtml-critical-webpack-pluginhtml-loaderhtml-webpack-pluginhttp-serverinspectpackistanbulistanbul-instrumenter-loaderjasminejasmine-corejasmine-enzymejson-loaderkarmakarma-babel-preprocessorkarma-chaikarma-chrome-launcherkarma-coveragekarma-coverage-istanbul-reporterkarma-jasminekarma-jasmine-html-reporterkarma-sinonkarma-sourcemap-loaderkarma-typescript-preprocessor2karma-webpackmarkdown-loadermini-css-extract-pluginmkdirpnode-gettextnode-sassoptimize-css-assets-webpack-pluginparallel-webpackpath-existspo-gettext-loaderpostcss-reduce-initialraw-loadersass-loadersinonstyle-loadersvg-inline-loadertslibtypescriptuglifyjs-webpack-pluginwebpackwebpack-bundle-analyzerwebpack-cliwebpack-dev-serverwebpack-mergereactreact-domreact-hot-loaderreact-test-renderer
0.10.0

4 years ago

0.9.1

5 years ago

0.9.0-beta.1

5 years ago

0.9.0-beta.0

5 years ago

0.9.0

5 years ago

0.8.1

6 years ago

0.8.0

6 years ago

0.7.4

6 years ago

0.7.3

6 years ago

0.7.2

6 years ago

0.7.1

6 years ago

0.7.0

6 years ago

0.6.2

6 years ago

0.6.1

6 years ago

0.6.0

6 years ago

0.5.2

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.5.0-2

6 years ago

0.5.0-1

6 years ago

0.5.0-0

6 years ago

0.4.3

6 years ago

0.4.2

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.2

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago