我在AngularJS项目中使用Webpack,当我尝试加载angular-clipboard时出现以下错误:
ERROR in ./assets/libs/angular-clipboard/angular-clipboard.js
Module not found: Error: Cannot resolve module 'angular' in C:\...\assets\libs\angular-clipboard
@ ./assets/libs/angular-clipboard/angular-clipboard.js 4:8-36
之前我正在加载它:
require('./assets/libs/angular/angular.js');
我的webpack.config.js
看起来像这样:
module.exports = {
entry: './entry.js',
output: {
path: __dirname,
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.css$/, loader: 'style-loader!css-loader' },
{ test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000' },
{ test: /\.less$/, loader: 'style-loader!css-loader!less-loader' }
]
}
};
答案 0 :(得分:0)
首先,webpack是一个模块捆绑器。这意味着从一个或多个所谓的entry points webpack开始,遵循项目中的导入,并使用所谓的加载器解析所有依赖项。这些加载器的目的是加载内容,但也可以在加载内容时以某种方式对其进行转换。这允许例如使用ts-loader将打字稿代码转换为javascript。
加载器是webpack的核心,允许转换代码,导入和操作图像,将SASS或stylus转换为CSS等。 Sky是这一点的限制,webpack附带了一堆加载器,这使得它非常强大。
最后,webpack创建了所谓的bundle,它们是包含所有已加载内容的javascript文件。这些javascript文件还可以包含CSS,JSON blob等。然后,Webpack还可以缩小代码以节省带宽,它可以散列捆绑包以防止缓存问题等等。
所以是的,webpack可以做几乎所有事情,而且大多数时候它都是适合这项工作的工具。
模块捆绑器:
任务选手:
Webpack与其加载器结合使用是纯模块捆绑器和任务运行器之间的混合。您可能会将其视为模块捆绑器 - 它还允许加载CSS,JSON等 - 每个模块都有一个管道 - 例如SASS到CSS管道。然后,配置告诉webpack这些管道的外观,应该从哪里开始捆绑,应该在哪里切片,等等。