jsb
v0.0.1
Published
Простой сборщик JavaScript-файлов.
Downloads
67
Readme
JSB
Простой сборщик JavaScript-файлов.
Описание
JSB предоставляет простой интерфейс для быстрой сборки и минификации JavaScript-файлов, включая следующие особенности:
- Компиляция нескольких исходных файлов в один.
- Сжатие исходного кода и удаление комментариев для уменьшения объема файла (с использованием UnglifyJS).
- Инструкции
#import
и#include
, которые позволяют импортировать файл как модуль и включать содержимое файла без изменений.
Установка
npm install jsb
Основной файл
При сборке необходимо указать JSB корневой файл, с которого начинается сборка. По умолчанию это файл main.js
в текущей рабочей директории.
Данный файл не является JSB-модулем, но допускает использование инструкций #import
и #include
для импорта модулей и включения файлов исходного кода.
CLI
Для сборки из командной строки необходимо использовать команду jsb
:
jsb
Данная команда без аргументов попытается отыскать в текущей рабочей директории файл main.js
, скомпилировать его и минифицировать, создав в текущей директории файл index.js
, представляющий скомпилированный файл исходного кода.
Для указания параметров сборки необходимо использовать следующие аргументы:
-i
,--input
: Указывает начальный файл. По умолчанию —main.js
.-o
,--output
: Указывает итоговый файл сборки. По умолчанию —index.js
.-m
,--min
: Указывает на необходимость минификации исходного кода и может иметь значенияtrue
илиfalse
. По умолчанию —true
.-r
,--root
: Указывает корневую директорию сборки, относительно которой будет выполняться поиск файлов, включаемых инструкциями#include
и#import
. По умолчанию — текущий рабочий каталог.
Файл build.json
Если в директории сборки находится файл build.json
, JSB попытается импортировать его и отыскать в нем пераметры сборки:
{
"input": "main.js",
"output": "index.js",
"min": true,
"root": "."
}
API
var jsb = require('jsb');
// Производит сборку проекта
jsb.build({
input: 'main.js',
output: 'index.js',
min: true,
root: __dirname + '/static/js'
});
// Возвращает скомпилированный код сборки
jsb.buildFile(filename, {
input: 'main.js',
output: 'index.js',
min: true,
root: __dirname + '/static/js'
});
JSB модуль
JSB модуль представляет собой обычный JavaScript-файл с некоторыми особенностями:
- Модуль имеет собственную область видимости, не засоряя глобальное пространство имен.
- Внутри JSB-модуля доступны несколько инструкций и локальных переменных:
- Инструкция
#include
включает содержимое другого исходного файла в текущий модуль без изменений. - Инструкция
#import
импортирует другой файл как JSB-модуль, в результате чего становится возможным присваивание результата данной инструкции локальной переменной. - Переменная
module
ссылается на объект, представляющий текущий модуль. Для экспорта данных и функций можно присваивать свойства данному объекту.
- Инструкция
Инструкция #include
Инструкция #include позволяет включить произвольный файл исходного кода в текущий модуль:
#include('./lib/jquery.js');
При сборке данная инструкция заменяется содержимым указанного файла.
Инструкция #import
Инструкция #import импортирует указанный файл исходного кода как JSB-модуль, который также может включать инструкции #include
и #import
:
var model = #import('./models/model.js');
При сборке содержимое указанного файла упаковывается в анонимную самовызывающуюся функцию и помещается на место инструкции #import
. При выполнении кода в данную функцию передается один аргумент — переменная module
, которая ссылается на пустой объект.
Переменная module
По умолчанию внутри JSB-модуля доступна одна локальная переменная module
, которая ссылается на пустой объект текущего модуля. Для экспорта значения или метода необходимо присвоить соответствующее свойство объекту module
.
Файл person.js
:
module.name = 'Tom Riddle';
module.age = '17';
Файл main.js
:
var person = #import('./person.js');
console.log(person.name); // Tom Riddle
console.log(person.age); // 17
Пути к файлам
Если путь к файлу начинается с //
, он рассматривается как относительный путь от корневой директории сборки. То есть, в инструкции #include('//jquery.js')
будет включен файл /build_directory/jquery.js
.
Если путь к файлу начинается с /
, он рассматривается как абсолютный путь от корня файловой системы.
В противном случае указанный путь к файлу рассматривается как относительный путь от директории, в которой расположен файл, содержащий инструкцию.