Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
module.exports = ... .Браузеров без поддержки source maps всё меньше и меньше
— Браузеров без поддержки source maps всё меньше и меньше, а такие гиганты как Mozilla и Google уже давно ввели их поддержку.
Вы можете запустить команду, используя sudo, но я бы всё-таки рекомендовал вам сначало ознакомиться с этим постом.
Why are you Browserifying Lo-Dash? It's not the target that Browserify is after.
({
paths: {
requireLib: '../third-party/almond' // Указываем путь к require.js-плейсхолдеру almond.js
},
include: ['requireLib', 'router/front-page-router', 'router/challenge-page-router'], // Инклудим и almond, и любые другие модули.
baseUrl: '.',
mainConfigFile: 'loader.js', // Это основной файл с конфигом, в котором прописаны настройки require.js
name: 'loader',
out: 'loader-min.js',
})
require(fp ? 'router1' : 'router2'), и чтобы этим модули были в сборке, то мы просто их указываем в списке include в конфигурации сборки.package1, у которого есть зависимость jQuery, и есть package2, который так же имеет зависимость jQuery. Мы можем собрать весь проект в один файл. А можем оставить проект модульным пофайлово, но все же оптимизировать отдельные packages. Естественно, есть смежные модули, такие как jQuery, код которых не имеет смысла включать в оба оптимизированных пакета, мы будем его грузить как обычно, отдельным файлом.({
mainConfigFile: 'loader.js', // Это основной файл с конфигом, в котором прописаны настройки require.js
modules: [
{
name: "modules-package-01",
exclude: ["jquery"]
}
],
dir: './deploy/'
})
./deploy, модули, которые мы указали, будут оптимизированны(будет произведена конкатенация зависимостей), однако, jQuery конкатенирован не будет, и при загрузке пакета(набора модулей) на клиенте модуль с jQuery будет запрашиваться отдельно. В итоге мы получаем склеенный package, в котором есть куча уникальных зависимостей, и он будет грузиться одним файлом(там будет набор моделей, вьюх, роутер, и все другое, что для других пакетов не нужно). И jQuery все еще будет грузиться из кеша отдельным файлом(хоть с CDN гугла, нам не важно).define("text!tpl2.txt",[],function(){return"template text"})
Я сейчас иду в сторону модулей, которые объединяются в своего рода пакет(не те пакеты, которые предлагает require.js). А вот уже сами пакеты я и оптимизирую
var subModule1 = require("./dir/sub1"); //будет включен в бандл
var subModule2 = require("./dir/sub1");//будет включен в бандл
var $ = require("jquery");// не будет включен в бандл, будет загружена отдельно асинхронно.
....
[
{
"id": "a1b5af78",
"source": "console.log(require('./foo')(5))",
"deps": { "./foo": "b8f69fa5" },
"entry": true
},
{
"id": "b8f69fa5",
"source": "module.exports = function (n) { return n * 111 }",
"deps": {}
}
]
Начинаем работать с browserify