xes-webpack-core
TypeScript icon, indicating that this package has built-in type declarations

0.10.0 • Public • Published

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:

param default description
package.apps.[appName].rootDir src directory (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].outDir dist directory (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].template index.html html 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

phrase type default meaning
process.env.DEVELOPMENT boolean project was build with development flag --env.dev
process.env.PRODUCTION boolean project was build with production flag --env.prod
process.env.PACKAGE object contents of package.json
process.env.APP object application build configuration resolved from build context
process.env.APP.rootDir string src package.apps.[appName].rootDir
process.env.APP.externalDirs string[] [] package.apps.[appName].externalDirs
process.env.APP.outDir string dist package.apps.[appName].outDir
process.env.APP.rootPath string resolved system path to package.apps.[appName].rootDir
process.env.APP.externalPaths string[] [] resolved system path to package.apps.[appName].externalDirs
process.env.APP.outPath string resolved system path to package.apps.[appName].outDir
process.env.APP.main string[] application entry scripts defined in package.apps.[appName].main
process.env.APP.test string application test entry script defined in package.apps.[appName].test
process.env.APP.assets string[] assets defined in package.apps.[appName].assets
process.env.APP.fonts string[] ['./fonts'] fonts defined in package.apps.[appName].fonts
process.env.APP.styles string[] ['./styles/styles.scss'] styles entry points defined in package.apps.[appName].styles
process.env.APP.stylesImportPaths string[] ['./styles'] styles lookup paths package.apps.[appName].stylesImportPaths
process.env.APP.vendor string[] vendor scripts defined in package.apps.[appName].vendor
process.env.APP.template string index.html main template name
process.env.APP.templateData string data injected into template htmlWebpackPlugin.options.data
process.env.LANGUAGES string[] ['en'] languages provided via package.apps.[appName].languages
process.env.LOCALES_DIR string '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.

Readme

Keywords

none

Package Sidebar

Install

npm i xes-webpack-core

Weekly Downloads

0

Version

0.10.0

License

MIT

Unpacked Size

1.86 MB

Total Files

51

Last publish

Collaborators

  • xesenix