EN RU
Forum

Methodology

Technology

Toolbox

Libraries

Tutorials

Technologies API

The package includes the following technologies:

browser-js

Builds the source JS files for blocks to be used for working in the browser.

The build includes the files with code that will work in any runtime environment (with the extension .vanilla.js), as well as files with code that will only work in the browser (with the extension .browser.js or .js).

Options

Options are specified in the .enb/ make.js configuration file.

target

Type: String. Default: ?.browser.js.

The name of the file for saving the result of building the necessary JS files for the project – the compiled ?.browser.js file.

filesTarget

Type: String. Default: ?.files.

The name of the target for accessing the list of source files for the build. The file list is provided by the files technology in the enb-bem-techs package.

sourceSuffixes

Type: String | String[]. Default: ['vanilla.js', 'js', 'browser.js'].

Suffixes of files for filtering out files with JS code.

iife

Type: Boolean. Default: false.

Isolates the code of the blocks by wrapping the code of each file in IIFE.

compress

Type: Boolean. Default: false.

Minimizing the resulting JS code using UglifyJS.

sourcemap

Type: Boolean. Default: false.

Creates source maps with information about the source files.

The maps are included in a compiled file called ? .files – they are not stored in separate files with a .map extension.

includeYM

Type: Boolean. Default: false.

Adds the YModules code at the beginning of the file.

Example

/* Code for blocks in the file system before the build
* blocks/
* ├── block.vanilla.js
* └── block.browser.js
* └── block.js
*
* After the build
* bundle/
* └── bundle.browser.js
*/

var BrowserJsTech = require('enb-js/techs/browser-js'),
    FileProvideTech = require('enb/techs/file-provider'),
    bemTechs = require('enb-bem-techs');

module.exports = function(config) {
    config.node('bundle', function(node) {
        // Getting the list of files for the build
        node.addTechs([
            [FileProvideTech, { target: '?.bemdecl.js' }],
            [bemTechs.levels, { levels: ['blocks'] }],
            [bemTechs.deps],
            [bemTechs.files]
        ]);

        // Compiling the JS file for working in the browser
        node.addTech(BrowserJsTech);
        node.addTarget('?.browser.js');
    });
};

node-js

Builds the source JS files for blocks to be used for working in Node.js.

The build includes the files with code that will work in any runtime environment (with the extension .vanilla.js), as well as files with code that will only work in Node.js (with the extension .node.js).

By default, all source files are connected using require. The paths are processed relative to the file that specifies require.

For the build to work correctly, all the source files must exist. To assemble the code into a single independent file (which does not require the source files to be present), use the bundled option.

Options

Options are specified in the .enb/make.js configuration file.

target

Type: String. Default: ?.node.js.

The name of the file for saving the build result of the necessary project JS files – the compiled ?.node.js file.

filesTarget

Type: String. Default: ?.files.

The name of the target for accessing the list of source files for the build. The file list is provided by the files technology in the enb-bem-techs package.

sourceSuffixes

Type: String | String[]. Default: ['vanilla.js', 'node.js'].

Suffixes of files for filtering out files with JS code.

devMode

Type: Boolean. Default: true.

Build mode for development. The Node.js cache is not taken into account for each build. This allows you to see changes without restarting Node.js.

bundled

Type: Boolean. Default: false.

Compiles all source files into one file.

When using this option, there is no need to store the source JS files for executing the compiled file.

includeYM

Type: Boolean. Default: false.

Provides YModules to the modules global variable.

Example

/* Код блоков в файловой системе до сборки
* blocks/
* ├── block.vanilla.js
* └── block.node.js
*
* После сбоки
* bundle/
* └── bundle.node.js
*/

var NodeJsTech = require('enb-js/techs/node-js'),
    FileProvideTech = require('enb/techs/file-provider'),
    bemTechs = require('enb-bem-techs');

module.exports = function(config) {
    config.node('bundle', function(node) {
        // Getting the list of files for the build
        node.addTechs([
            [FileProvideTech, { target: '?.bemdecl.js' }],
            [bemTechs.levels, { levels: ['blocks'] }],
            [bemTechs.deps],
            [bemTechs.files]
        ]);

        // Compiling the JS file for working in Node.js
        node.addTech(NodeJsTech);
        node.addTarget('?.node.js');
    });
};