javascript - 使用 Webpack 仅生成供应商捆绑包
问题描述
AngularJS
目前,我们使用 Bower 作为我们项目的前端依赖项和bower-concat
Grunt 任务将我们编译bower_components
成一个libraries.js
文件。以类似的方式,我们将库 CSS 文件捆绑到一个libraries.css
.
展望未来,我们想改用NPM
and Webpack
。最好,我们最初希望使用 Webpack 仅创建一个供应商包,然后它将替换我们的 library.js 文件。我们还想使用 Webpack 来捆绑我们的供应商 CSS 文件。目前,我们希望继续使用 Grunt 的常规 concat 任务来处理应用程序逻辑和 CSS。本质上,我们希望在此切换中尽可能少地触及应用程序代码。
我试图通过将所有依赖项从bower.json
to移动package.json
并在需要的地方修复版本号和包名称,然后创建一个index.j
s 文件来导入所有依赖项来做到这一点。
我的 webpack.config.js 目前看起来如下:
const path = require('path');
module.exports = {
entry: './index.js',
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'src/main/webapp/app/js')
},
module: {
rules: [
{
test: /\/.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
},
optimization: {
splitChunks: {
chunks: 'all'
}
}
};
这段代码确实创建了一个文件main.bundle.js
和一个main~vendor.bundle.js
文件,但是在我们的 HTML 模板中包含文件并启动应用程序会立即导致控制台出错:
未捕获的 ReferenceError:未定义角度
谷歌搜索该问题返回的结果很少,因为有关该主题的所有帖子都假定完全切换到 Webpack。
最终,我的问题归结为“您可以使用 Webpack 仅创建一个供应商捆绑包,然后可以将其包含在Thymeleaf-style
HTML 文件中吗?如果可以,如何?”
解决方案
我做了一个快速测试:
//index.js
import angular from 'angular';
import angularAnimate from 'angular-animate';
import uirouter from '@uirouter/angularjs';
//src/main/webapp/app/js/app.js
angular
.module('app', ['ui.router', 'ngAnimate'])
.component('com', { template: 'hello' });
<!-- src/main/webapp/app/index.html -->
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/main.bundle.js"></script>
<script src="js/vendors~main.bundle.js"></script>
<script src="js/app.js"></script>
<script>
console.log(angular.version);
</script>
</head>
<body>
<com></com>
</body>
</html>
输出:
对象{完整:“1.7.8”,主要:1,次要:7,点:8,代号:“热情奉献”}
并且comonent产生“你好”。
所以 - 你在做一些不同的事情吗?
推荐阅读
- apache-kafka - 无法使用 CONDUKTOR UI 连接到 Kafka
- azure - 从 Azure 应用程序访问所有用户驱动器
- javascript - 打字稿反应返回承诺的redux动作
- reporting-services - 使用聚合总和或按总和表达式计算子组分组的总和
- java - 将包发布到 github 的问题
- c - 如何用 NULL 初始化结构指针变量?
- authentication - 从 Microsoft AD 应用程序获取访问令牌而不进行重定向
- php - 如何调试在handleRequest()之后消失的表单symfony字段值?
- scala - 联合字段的 Avro 无效默认值
- simple-html-dom - 如何在图像的 src 和 alt 属性之间设置数据属性?