npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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.

Если путь к файлу начинается с /, он рассматривается как абсолютный путь от корня файловой системы.

В противном случае указанный путь к файлу рассматривается как относительный путь от директории, в которой расположен файл, содержащий инструкцию.