【发布时间】:2017-09-09 05:58:56
【问题描述】:
我想连接一个包含我的 angularjs 代码的 js 文件列表并将其 uglify。我想以有序的方式将其连接起来,以避免出现“that .... is not defined”错误。
我还从 github 下载了一些库并放在“lib”文件夹中。我想在 vendor.bundle.js 中连接这些库。
这是文件夹结构:
/app
/feature1
feature1.controller.js
/feature2
feature2.controller.js
/...
app.module.js
/libs
/angular
angular.min.js
/angular-ui-router
angular-ui-router.min.js
/angular-material
angular-material.min.js
angular-material.min.css
/...
app.js
vendor.js
在 app.js 里面我有这个:
require('./app/app.module.js');
require('./app/feature1/feature1.controller.js');
require('./app/feature2/feature2.controller.js');
...
在 vendor.js 里面我有这个:
require('./libs/angular/angular.min.js');
require('./libs/angular-ui-router/angular-ui-router.min.js');
require('./libs/angular-material/angular-material.min.js');
require('./libs/angular-material/angular-material.min.css');
...
这是 webpack.config.js:
const path = require('path');
const webpack = require('webpack');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
context: __dirname,
entry: {
app: "./app.js",
vendor: "./vendor.js",
},
output: {
path: path.resolve(__dirname, "app"),
filename: "app.bundle.js"
},
module: {
rules: [
{
test: /\.css$/,
use: [ 'style-loader', 'css-loader' ]
}
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: "vendor",
filename:"./app/vendor.bundle.js"
}),
new UglifyJSPlugin({
compress: true,
sourceMap: false,
mangle: true
})
]
};
这个配置的结果是app.bundle.js里面的拼接没有排序,所以有函数没有定义等等……
并且没有创建 vendor.bundle.js,因为它会产生很多错误。
使用拆分的个人代码和供应商代码进行缩小的正确方法是什么?
【问题讨论】:
-
有一个用于 webpack 的 angular 加载器可以做到这一点,但它需要每个 js 文件的模块才能工作
标签: javascript angularjs minify webpack-2 uglifyjs