webpack如何运作?

Max*_*kyi 6 javascript webpack

我不明白webpack的require功能是如何工作的.例如,我正在阅读有关webpack的这篇文章,并且有以下示例:

让我们从创建我们的项目并安装Webpack开始,我们还将引入jQuery以便稍后演示一些内容.

$ npm init
$ npm install jquery --save
$ npm install webpack --save-dev
Run Code Online (Sandbox Code Playgroud)

现在让我们创建我们的应用程序的入口点,现在在简单的ES5中:

SRC/index.js

var $ = require('jquery');

$('body').html('Hello');
Run Code Online (Sandbox Code Playgroud)

让我们在webpack.config.js文件中创建我们的Webpack配置.Webpack配置只是Javascript,需要导出一个对象:

webpack.config.js

module.exports = {
    entry:  './src',
    output: {
        path:     'builds',
        filename: 'bundle.js',
    },
};
Run Code Online (Sandbox Code Playgroud)

webpack如何知道jquery是require('jquery')什么?我没有看到任何与jquery相关的配置选项.

Bre*_*non 6

在这种情况下,它将像CommonJS一样工作require(例如,Node requires).(Webpack的require支持比传统require的更灵活,但默认行为是相同的.)

文档中的这个模块部分解释了Node如何确定从调用返回的内容require().如果你需要'jquery',它首先会查找该名称的本机模块,找不到,然后查看node_modules(因为没有/./在你的路径的开头).由于'jquery'是一个文件夹,它会查看package.json文件以查看它声明main包的文件是什么,这就是它执行的内容.

值得一读的是整篇文章; 例如,缓存部分很重要.

  • webpack不委托给node.js require.它是node.js解析算法的完全独立实现(加上更多东西).这是webpack用于解析的库:https://github.com/webpack/enhanced-resolve (7认同)