This is a Mimosa module for packaging web applications. It assumes that the mimosa-server module is also being used.
- For more information regarding Mimosa, see http://mimosa.io
- For information regarding packaging in Mimosa, see http://mimosa.io/commands.html#package
Add web-package as a string to your list of modules in the mimosa-config. When Mimosa starts up, it will install the module for you.
If you are running mimosa build with the --package flag, mimosa-web-package will:
- Remove the directory at
webPackage.outPathif it already exists - Copy your entire project to the
webPackage.outPathfolder, omitting anything you have listed inwebPackage.exclude - Re-write the package.json to not include any mimosa packages in the
package.jsondepedenciesarray. - Write the parts of the fully-resolved and blown out
mimosa-configthat pertain to the server to thewebPackage.outPathasconfig.js. Will set some config values, like live reload to production level settings. Will also turn normally absolutemimosa-configpaths relative. To accommodate app hosting solutions like Heroku,config.jsalso re-figures the location of public assets. - Write a simple
app.jsfile towebPackage.outPath.app.jsexists to be a starting point for your app when Mimosa is not available to invoke your server. It simply reads the config, and calls yourserver.startServermethod passing the config. - runs NPM install from inside the
webpackage.outPath. The--productionflag is used to avoid installing any packages in your package.jsondevDependencies. If your production app actually depends on any packages listed there, they should really be independencies. - By default a
.tar.gzwill be created for your packaged application. IfarchiveNameis set to a.zipfile, a.zipfile will be created instead.
What you get as a result is an application that runs without Mimosa's aid by simply executing node app.js, as well as an archive file (.tar.gz/.zip) of the codebase.
If tar/zip isn't available as a command line utility on your system, no tar/zip file will be created.
If your application is using Mimosa's default server rather than a server of your own, web-package will not write an app.js and will not execute npm install.
webPackage:
archiveName: "app"
configName: "config"
useEntireConfig: false
outPath: "dist"
exclude: ["README.md","node_modules","mimosa-config.coffee","mimosa-config.js","assets",".git",".gitignore","mimosa-config-documented.coffee",".mimosa","bower.json"]
appjs: "app.js"
archiveName: a string, the name of the output.tar.gz/.zipfile. No archive will be created ifarchiveNameis set tonull. A.zipwill only be created if thearchiveNameends in.zip. Otherwise a tar file is assumed. The following rules only apply to.tars. If the default is changed away fromapp, web-package will use the changed config setting. If the default is left alone, web-package will check the for anameproperty in thepackage.json, and if it exists, it will be used. If the default is left asapp, and there is nopackage.json.nameproperty, the default is used.configName: a string, the name of output configuration file without extension; it is also acceptable to define a subdirectory, although the subdirectory must exist and the path separator character ('/' or '') must be at the beginning (e.g. "config/settings"). The relevant portions of themimosa-configare written to theoutPathdirectory asconfigName + '.js'useEntireConfig: a boolean, this module pulls out specific pieces of the mimosa-config that apply to what you may need with a packaged application. For instance, it does not include a coffeescript config, or a jshint config. If you want it to include the entire resolved mimosa-config flip this flag to true.outPath: a string, the folder where mimosa-web-package will place your packaged app. Can be either relative to the root of your project or absolute.exclude: an array, files, relative to the root of the project, to not include in the package. If it isn't listed in this array, it will be included in the package.appjs: name of the output app.js file which bootstraps the application, when set to null, web-package will not output a bootstrap file