Webpack と AngularJS をどのように組み合わせて使用しますか? また、テンプレートの読み込みとリソースのオンデマンド フェッチについてはどうですか?
この目的のために適切に作成されたファイルの例は、webpack.config.js
非常に高く評価されます。
ここに表示されるすべてのコード スニペットは、この github リポジトリでアクセスできます。コードは、この 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', []);
...
以下は正しいですか?これを行う簡単な方法はありますか?別の方法をリストしたいくつかの(どの標準から見ても多くはない)投稿を見てきました。
// Add to webpack.config.js#module#loaders array
{
test: /[\/]angular\.js$/,
loader: "exports?angular"
}
stackfull/angular-seedには、現在開発中の別のプラグインもあります。正しい方向にあるように見えますが、今は本当に使いにくいです。
Webpack は非常に優れていますが、ドキュメントとサンプルが不足しているため、役に立ちません。