Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
entry: {
auth: _path + '/app/auth.js',
app: _path + '/app/index.js',
vendors: dependencies
},
new HtmlPlugin({
title: 'App',
chunks: ['app', 'vendors'],
filename: 'index.html',
template: 'app/index.html'
}),
new HtmlPlugin({
title: 'Auth',
chunks: ['auth', 'vendors'],
filename: 'auth.html',
template: 'app/auth.html'
}),
currentUser.role != 'admin', то ему загружается в качестве модуля 'admin' файл 'public/js/mock/admin.js', а если пользователь с currentUser.role == 'admin', то ему загружается файл 'public/js/admin.js'. Более того, если пользователь не является админом и попробует открывать все файлы js, которые найдет, он не должен найти адрес файла 'public/js/admin.js'. То есть для «не админа» в результирующем js файле (файлах) не должно быть ссылок на 'public/js/admin.js'.RequireJS has an optimization tool that does the following
Combines related scripts together into build layers and minifies them via UglifyJS (the default) or Closure Compiler (an option when using Java).
Optimizes CSS by inlining CSS files referenced by import and removing comments.
Хм, вебпак так же использует сторонние модули для работы с такими вещами?
В данном случае я отдаю такое напрямую в траспилиры и пре(пост)процессоры. С помощью таск ранера, например gulp или grunt.
Ему даже не обязательно уметь оптимизировать и склеивать JS файлы (я считаю это лишним функционалом).
module.exports = {
x: require( "./x" ),
b: require( "./b" )
};
var z = require( "./z" ) ;
//...
z.js
var b = require( "./a" ).b
//...
if (userAccess) {
require.ensure(['secret', 'superpupersecret'], function (require){
var supersecret = require('secret');
supersecret.launchNuke();
});
else {
alert('you shall not pass');
}
require.ensure(['https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js', 'superpupersecret'], function (require){
var supersecret = require('secret');
supersecret.launchNuke();
});
npm install angular --save
Если валидация происходит на стороне JS то это невозможно сделать.
Это выглядит как задача, которую webpack решать не призван.
а вот ограничить доступ к нему можно с помощью других инструментов
это не принципиально.Принципиально.
Проблема в том, что webpack не может сложить проект так, чтобы в нем не осталось ссылок на подключаемые модули (либо я не понял, как это сделать).
// config.js
{
entry: {
app: 'app.js',
output: {
path: __dirname + "/build/dev/",
publicPath: "/scripts/",
filename: '[name].js',
chunkFilename: '[name].js', // !!!!!!!!!
},
target: 'web'
}
// app.js
var nm;
nm = require('normal.js');
require.ensure(["secret"], function(require) {
var secret = require('secret.js');
return console.log(adm);
}, 'SecretName'); // !!!!!!!!!
/build/dev/
- app.js
- SecretName.js
росто у webpack проблема в том, что его пытаются сделать «слишком умным».
И 2 раза собрать с FeatureFlags где один раз будет заглушка а второй раз нормальный файл.
webpack тупой как пробка
Webpack для Single Page App