Как вы используете Webpack и AngularJS вместе, и как насчет загрузки шаблона и выборки по запросу?
Пример хорошо написанного файла webpack.config.js
для этой цели был бы очень оценен.
Все приведенные здесь фрагменты кода можно получить по адресу это github repo. Код был щедро адаптирован из this packetloop git repo.
webpack.config.json
var path = require('path');
var ResolverPlugin = require("webpack/lib/ResolverPlugin");
var config = {
context: __dirname,
entry: ['webpack/hot/dev-server', './app/app.js'],
output: {
path: './build',
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.css$/,
loader: "style!css-loader"
}, {
test: /\.scss$/,
loader: "style!css!sass?outputStyle=expanded"
}, {
test: /\.jpe?g$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$/,
loader: "file"
}, {
test: /\.html$/,
loader: "ngtemplate?relativeTo=" + path.join(__dirname, 'app/') + "!raw"
}]
},
// Let webpack know where the module folders are for bower and node_modules
// This lets you write things like - require('bower/<plugin>') anywhere in your code base
resolve: {
modulesDirectories: ['node_modules', 'lib/bower_components'],
alias: {
'npm': __dirname + '/node_modules',
'vendor': __dirname + '/app/vendor/',
'bower': __dirname + '/lib/bower_components'
}
},
plugins: [
// This is to help webpack know that it has to load the js file in bower.json#main
new ResolverPlugin(
new ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
};
module.exports = config;
Чтобы импортировать AngularJS в основной app.js
, вы делаете следующее:
приложение/поставщик/ angular.js
'use strict';
if (!global.window.angular) {
require('bower/angular/angular');
}
var angular = global.window.angular;
module.exports = angular;
И затем используйте его в app.js
, например,
app.js
...
var angular = require('vendor/angular');
// Declare app level module
var app = angular.module('myApp', []);
...
Правильно ли следующее? Есть ли более простой способ сделать это? Я видел несколько (не по каким-либо стандартам) сообщений, в которых указан другой метод.
От этот комментарий для reddit
// Add to webpack.config.js#module#loaders array
{
test: /[\/]angular\.js$/,
loader: "exports?angular"
}
Существует еще один плагин, который находится в разработке прямо сейчас, stackfull/angular-seed. Кажется, что он находится в правильном направлении, но на самом деле его очень трудно использовать прямо сейчас.
Webpack - это потрясающе, но отсутствие документации и образцов убивает ее.