diff --git a/package.json b/package.json index 5a041f0..49259e9 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "cheerio": "^0.22.0", "eval": "^0.1.0", "url": "^0.11.0", - "webpack-sources": "^0.2.0" + "webpack-sources": "^1.0.1" }, "devDependencies": { "async": "^2.0.1", @@ -30,14 +30,14 @@ "babel-loader": "^6.2.0", "babel-preset-es2015": "^6.1.18", "chai": "^3.4.1", - "compression-webpack-plugin": "^0.3.1", + "compression-webpack-plugin": "^0.4.0", "coveralls": "^2.11.4", "ejs": "^2.3.4", "glob": "^7.0.3", "istanbul": "^0.4.1", "mocha": "^3.0.2", "rimraf": "^2.4.4", - "webpack": "^1.12.10", + "webpack": "^2.6.1", "webpack-stats-plugin": "^0.1.1" } } diff --git a/test/success-cases/compression/expected-output/index.html.gz b/test/success-cases/compression/expected-output/index.html.gz index e9dab09..7fe8a97 100644 Binary files a/test/success-cases/compression/expected-output/index.html.gz and b/test/success-cases/compression/expected-output/index.html.gz differ diff --git a/test/success-cases/compression/expected-output/index.js b/test/success-cases/compression/expected-output/index.js new file mode 100644 index 0000000..d99eab4 --- /dev/null +++ b/test/success-cases/compression/expected-output/index.js @@ -0,0 +1,90 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +module.exports = function(locals, callback) { + callback(null, locals.template({ html: '

' + locals.path + '

' })); +}; + + +/***/ }) +/******/ ]); +}); \ No newline at end of file diff --git a/test/success-cases/es-modules/webpack.config.js b/test/success-cases/es-modules/webpack.config.js index 7b42074..d71acc5 100644 --- a/test/success-cases/es-modules/webpack.config.js +++ b/test/success-cases/es-modules/webpack.config.js @@ -21,14 +21,18 @@ module.exports = { }, module: { - loaders: [ + rules: [ { test: /\.js$/, exclude: /node_modules/, - loader: 'babel', - query: { - presets: ['es2015'] - } + use:[ + { + loader: 'babel-loader', + options: { + presets: ['es2015'] + } + } + ] } ] }, diff --git a/test/success-cases/legacy-args/expected-output/0.index.js b/test/success-cases/legacy-args/expected-output/0.index.js new file mode 100644 index 0000000..6345ea3 --- /dev/null +++ b/test/success-cases/legacy-args/expected-output/0.index.js @@ -0,0 +1,9 @@ +webpackJsonp([0],[ +/* 0 */ +/***/ (function(module, exports) { + +module.exports = 'Foo'; + + +/***/ }) +]); \ No newline at end of file diff --git a/test/success-cases/legacy-args/expected-output/1.index.js b/test/success-cases/legacy-args/expected-output/1.index.js deleted file mode 100644 index eaa4018..0000000 --- a/test/success-cases/legacy-args/expected-output/1.index.js +++ /dev/null @@ -1,10 +0,0 @@ -webpackJsonp([1],[ -/* 0 */, -/* 1 */ -/***/ function(module, exports) { - - module.exports = 'Foo'; - - -/***/ } -]); \ No newline at end of file diff --git a/test/success-cases/legacy-args/expected-output/index.js b/test/success-cases/legacy-args/expected-output/index.js new file mode 100644 index 0000000..8a2bd62 --- /dev/null +++ b/test/success-cases/legacy-args/expected-output/index.js @@ -0,0 +1,183 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // install a JSONP callback for chunk loading +/******/ var parentJsonpFunction = window["webpackJsonp"]; +/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) { +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0, resolves = [], result; +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(installedChunks[chunkId]) { +/******/ resolves.push(installedChunks[chunkId][0]); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ for(moduleId in moreModules) { +/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { +/******/ modules[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules); +/******/ while(resolves.length) { +/******/ resolves.shift()(); +/******/ } +/******/ +/******/ }; +/******/ +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // objects to store loaded and loading chunks +/******/ var installedChunks = { +/******/ 1: 0 +/******/ }; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // This file contains only the entry chunk. +/******/ // The chunk loading function for additional chunks +/******/ __webpack_require__.e = function requireEnsure(chunkId) { +/******/ var installedChunkData = installedChunks[chunkId]; +/******/ if(installedChunkData === 0) { +/******/ return new Promise(function(resolve) { resolve(); }); +/******/ } +/******/ +/******/ // a Promise means "currently loading". +/******/ if(installedChunkData) { +/******/ return installedChunkData[2]; +/******/ } +/******/ +/******/ // setup Promise in chunk cache +/******/ var promise = new Promise(function(resolve, reject) { +/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject]; +/******/ }); +/******/ installedChunkData[2] = promise; +/******/ +/******/ // start chunk loading +/******/ var head = document.getElementsByTagName('head')[0]; +/******/ var script = document.createElement('script'); +/******/ script.type = 'text/javascript'; +/******/ script.charset = 'utf-8'; +/******/ script.async = true; +/******/ script.timeout = 120000; +/******/ +/******/ if (__webpack_require__.nc) { +/******/ script.setAttribute("nonce", __webpack_require__.nc); +/******/ } +/******/ script.src = __webpack_require__.p + "" + chunkId + ".index.js"; +/******/ var timeout = setTimeout(onScriptComplete, 120000); +/******/ script.onerror = script.onload = onScriptComplete; +/******/ function onScriptComplete() { +/******/ // avoid mem leaks in IE. +/******/ script.onerror = script.onload = null; +/******/ clearTimeout(timeout); +/******/ var chunk = installedChunks[chunkId]; +/******/ if(chunk !== 0) { +/******/ if(chunk) { +/******/ chunk[1](new Error('Loading chunk ' + chunkId + ' failed.')); +/******/ } +/******/ installedChunks[chunkId] = undefined; +/******/ } +/******/ }; +/******/ head.appendChild(script); +/******/ +/******/ return promise; +/******/ }; +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/"; +/******/ +/******/ // on error function for async loading +/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 1); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */, +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +// Do not actually call this function, because executing require.ensure requires a 'document'. +function dontDoIt() { + __webpack_require__.e/* require.ensure */(0).then((function() { + var foo = __webpack_require__(0); + }).bind(null, __webpack_require__)).catch(__webpack_require__.oe); +} + +module.exports = function(locals, callback) { + setTimeout(function() { + callback(null, locals.template({ html: '

' + locals.path + '

' })); + }, 10); + +}; + + +/***/ }) +/******/ ]); +}); \ No newline at end of file diff --git a/test/success-cases/require-ensure/expected-output/0.index.js b/test/success-cases/require-ensure/expected-output/0.index.js new file mode 100644 index 0000000..6345ea3 --- /dev/null +++ b/test/success-cases/require-ensure/expected-output/0.index.js @@ -0,0 +1,9 @@ +webpackJsonp([0],[ +/* 0 */ +/***/ (function(module, exports) { + +module.exports = 'Foo'; + + +/***/ }) +]); \ No newline at end of file diff --git a/test/success-cases/require-ensure/expected-output/1.index.js b/test/success-cases/require-ensure/expected-output/1.index.js deleted file mode 100644 index eaa4018..0000000 --- a/test/success-cases/require-ensure/expected-output/1.index.js +++ /dev/null @@ -1,10 +0,0 @@ -webpackJsonp([1],[ -/* 0 */, -/* 1 */ -/***/ function(module, exports) { - - module.exports = 'Foo'; - - -/***/ } -]); \ No newline at end of file diff --git a/test/success-cases/require-ensure/expected-output/index.js b/test/success-cases/require-ensure/expected-output/index.js new file mode 100644 index 0000000..8a2bd62 --- /dev/null +++ b/test/success-cases/require-ensure/expected-output/index.js @@ -0,0 +1,183 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // install a JSONP callback for chunk loading +/******/ var parentJsonpFunction = window["webpackJsonp"]; +/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) { +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0, resolves = [], result; +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(installedChunks[chunkId]) { +/******/ resolves.push(installedChunks[chunkId][0]); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ for(moduleId in moreModules) { +/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { +/******/ modules[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules); +/******/ while(resolves.length) { +/******/ resolves.shift()(); +/******/ } +/******/ +/******/ }; +/******/ +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // objects to store loaded and loading chunks +/******/ var installedChunks = { +/******/ 1: 0 +/******/ }; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // This file contains only the entry chunk. +/******/ // The chunk loading function for additional chunks +/******/ __webpack_require__.e = function requireEnsure(chunkId) { +/******/ var installedChunkData = installedChunks[chunkId]; +/******/ if(installedChunkData === 0) { +/******/ return new Promise(function(resolve) { resolve(); }); +/******/ } +/******/ +/******/ // a Promise means "currently loading". +/******/ if(installedChunkData) { +/******/ return installedChunkData[2]; +/******/ } +/******/ +/******/ // setup Promise in chunk cache +/******/ var promise = new Promise(function(resolve, reject) { +/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject]; +/******/ }); +/******/ installedChunkData[2] = promise; +/******/ +/******/ // start chunk loading +/******/ var head = document.getElementsByTagName('head')[0]; +/******/ var script = document.createElement('script'); +/******/ script.type = 'text/javascript'; +/******/ script.charset = 'utf-8'; +/******/ script.async = true; +/******/ script.timeout = 120000; +/******/ +/******/ if (__webpack_require__.nc) { +/******/ script.setAttribute("nonce", __webpack_require__.nc); +/******/ } +/******/ script.src = __webpack_require__.p + "" + chunkId + ".index.js"; +/******/ var timeout = setTimeout(onScriptComplete, 120000); +/******/ script.onerror = script.onload = onScriptComplete; +/******/ function onScriptComplete() { +/******/ // avoid mem leaks in IE. +/******/ script.onerror = script.onload = null; +/******/ clearTimeout(timeout); +/******/ var chunk = installedChunks[chunkId]; +/******/ if(chunk !== 0) { +/******/ if(chunk) { +/******/ chunk[1](new Error('Loading chunk ' + chunkId + ' failed.')); +/******/ } +/******/ installedChunks[chunkId] = undefined; +/******/ } +/******/ }; +/******/ head.appendChild(script); +/******/ +/******/ return promise; +/******/ }; +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/"; +/******/ +/******/ // on error function for async loading +/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 1); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */, +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +// Do not actually call this function, because executing require.ensure requires a 'document'. +function dontDoIt() { + __webpack_require__.e/* require.ensure */(0).then((function() { + var foo = __webpack_require__(0); + }).bind(null, __webpack_require__)).catch(__webpack_require__.oe); +} + +module.exports = function(locals, callback) { + setTimeout(function() { + callback(null, locals.template({ html: '

' + locals.path + '

' })); + }, 10); + +}; + + +/***/ }) +/******/ ]); +}); \ No newline at end of file