add Entry —> _addModuleChain —> semaphore.acquire —> moduleFactory.create —> addModule —> onModule —> moduleReady —> processModuleDependencies

    1. addEntry(context, entry, name, callback) {
    2. const slot = {
    3. name: name,
    4. module: null
    5. };
    6. this.preparedChunks.push(slot);
    7. this._addModuleChain(context, entry, (module) => {
    8. entry.module = module;
    9. this.entries.push(module);
    10. module.issuer = null;
    11. }, (err, module) => {
    12. if(err) {
    13. return callback(err);
    14. }
    15. // 保证不重复
    16. if(module) {
    17. slot.module = module;
    18. } else {
    19. const idx = this.preparedChunks.indexOf(slot);
    20. this.preparedChunks.splice(idx, 1);
    21. }
    22. return callback(null, module);
    23. });
    24. }