@riteable/project-meta v1.0.5
project-meta
Extract project metadata from various files, such as package.json, .env, and Sass files.
Why
To generate a web app manifest file you need data such as the following:
{
"name": "My App",
"description": "A short description of the project.",
"background_color": "#ffffff",
"theme_color": "#000000"
}Generally, you would already have this data set in different files. The name might be set in a .env file; the description in package.json; and the colors in a Sass variables file. This module extracts the data from all these files, and makes them available to use wherever you need it.
Install
Install the package:
$ npm i @riteable/project-metaExample usage
The following shows a use case involving webpack and the webpack-pwa-manifest plugin:
// webpack.config.js
const projectMeta = require('@riteable/project-meta')
const WebpackPwaManifest = require('webpack-pwa-manifest')
const meta = projectMeta({ sass: './src/css/_variables.scss' })
module.exports = {
// ...
plugins: [
new WebpackPwaManifest({
filename: 'web-manifest.json',
name: meta.env.appName,
short_name: meta.env.appName,
description: meta.package.description,
background_color: meta.sass.bodyColor.hex
})
]
// ...
}Options
projectMeta(options = {}) accepts the following options:
package: Path to thepackage.jsonfile. Default:process.cwd() + '/package.json'.env: Path to the.envfile. Default:process.cwd() + '/.env'.sass: Path to the Sass variables file. Default:false.camelize: Set to false to keep text case as is. Default:true.
Output
The following output is an example:
{
package: {
name: 'my-app',
description: 'A short description of this app.'
},
env: {
appName: 'My App'
},
sass: {
bodyColor: { r: 0, g: 0, b: 0, a: 1, hex: '#000000' }
}
}NOTICE: The module transforms the variables to camel-case by default. So, environment variables like APP_NAME will be turned into appName, and Sass variables such as $body-color will become bodyColor.