Skip to content
This repository was archived by the owner on Mar 17, 2021. It is now read-only.

Commit a2f5faf

Browse files
refactor: code (#344)
1 parent 9b9cd8d commit a2f5faf

File tree

9 files changed

+2169
-1737
lines changed

9 files changed

+2169
-1737
lines changed

package-lock.json

Lines changed: 2003 additions & 1708 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,34 +38,34 @@
3838
},
3939
"dependencies": {
4040
"loader-utils": "^1.2.3",
41-
"schema-utils": "^2.0.0"
41+
"schema-utils": "^2.5.0"
4242
},
4343
"devDependencies": {
44-
"@babel/cli": "^7.5.5",
45-
"@babel/core": "^7.5.5",
46-
"@babel/preset-env": "^7.5.5",
47-
"@commitlint/cli": "^8.1.0",
48-
"@commitlint/config-conventional": "^8.1.0",
44+
"@babel/cli": "^7.7.0",
45+
"@babel/core": "^7.7.2",
46+
"@babel/preset-env": "^7.7.1",
47+
"@commitlint/cli": "^8.2.0",
48+
"@commitlint/config-conventional": "^8.2.0",
4949
"@webpack-contrib/defaults": "^5.0.2",
5050
"@webpack-contrib/eslint-config-webpack": "^3.0.0",
51-
"babel-jest": "^24.8.0",
51+
"babel-jest": "^24.9.0",
5252
"commitlint-azure-pipelines-cli": "^1.0.2",
53-
"cross-env": "^5.2.0",
54-
"del": "^5.0.0",
55-
"del-cli": "^2.0.0",
56-
"eslint": "^6.0.1",
57-
"eslint-config-prettier": "^6.0.0",
58-
"eslint-plugin-import": "^2.18.0",
59-
"husky": "^3.0.0",
60-
"jest": "^24.8.0",
61-
"jest-junit": "^6.4.0",
62-
"lint-staged": "^9.2.0",
63-
"memory-fs": "^0.4.1",
53+
"cross-env": "^6.0.3",
54+
"del": "^5.1.0",
55+
"del-cli": "^3.0.0",
56+
"eslint": "^6.6.0",
57+
"eslint-config-prettier": "^6.7.0",
58+
"eslint-plugin-import": "^2.18.2",
59+
"husky": "^3.1.0",
60+
"jest": "^24.9.0",
61+
"jest-junit": "^9.0.0",
62+
"lint-staged": "^9.4.3",
63+
"memory-fs": "^0.5.0",
6464
"npm-run-all": "^4.1.5",
65-
"prettier": "^1.18.2",
66-
"standard-version": "^6.0.1",
67-
"url-loader": "^2.0.1",
68-
"webpack": "^4.36.1"
65+
"prettier": "^1.19.1",
66+
"standard-version": "^7.0.1",
67+
"url-loader": "^2.2.0",
68+
"webpack": "^4.41.2"
6969
},
7070
"keywords": [
7171
"webpack"

src/index.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,9 @@ export default function loader(content) {
5959
this.emitFile(outputPath, content);
6060
}
6161

62-
const esModules =
63-
typeof options.esModules === 'boolean' && options.esModules === true;
64-
65-
// TODO revert to ES2015 Module export, when new CSS Pipeline is in place
66-
return `${esModules ? 'export default' : 'module.exports ='} ${publicPath};`;
62+
return `${
63+
options.esModules ? 'export default' : 'module.exports ='
64+
} ${publicPath};`;
6765
}
6866

6967
export const raw = true;

src/options.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@
5656
"instanceof": "RegExp"
5757
}
5858
]
59+
},
60+
"esModules": {
61+
"type": "boolean"
5962
}
6063
},
6164
"type": "object"

test/__snapshots__/loader.test.js.snap

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,113 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3+
exports[`loader should work with ModuleConcatenationPlugin 1`] = `
4+
"/******/ (function(modules) { // webpackBootstrap
5+
/******/ // The module cache
6+
/******/ var installedModules = {};
7+
/******/
8+
/******/ // The require function
9+
/******/ function __webpack_require__(moduleId) {
10+
/******/
11+
/******/ // Check if module is in cache
12+
/******/ if(installedModules[moduleId]) {
13+
/******/ return installedModules[moduleId].exports;
14+
/******/ }
15+
/******/ // Create a new module (and put it into the cache)
16+
/******/ var module = installedModules[moduleId] = {
17+
/******/ i: moduleId,
18+
/******/ l: false,
19+
/******/ exports: {}
20+
/******/ };
21+
/******/
22+
/******/ // Execute the module function
23+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
24+
/******/
25+
/******/ // Flag the module as loaded
26+
/******/ module.l = true;
27+
/******/
28+
/******/ // Return the exports of the module
29+
/******/ return module.exports;
30+
/******/ }
31+
/******/
32+
/******/
33+
/******/ // expose the modules object (__webpack_modules__)
34+
/******/ __webpack_require__.m = modules;
35+
/******/
36+
/******/ // expose the module cache
37+
/******/ __webpack_require__.c = installedModules;
38+
/******/
39+
/******/ // define getter function for harmony exports
40+
/******/ __webpack_require__.d = function(exports, name, getter) {
41+
/******/ if(!__webpack_require__.o(exports, name)) {
42+
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
43+
/******/ }
44+
/******/ };
45+
/******/
46+
/******/ // define __esModule on exports
47+
/******/ __webpack_require__.r = function(exports) {
48+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
49+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
50+
/******/ }
51+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
52+
/******/ };
53+
/******/
54+
/******/ // create a fake namespace object
55+
/******/ // mode & 1: value is a module id, require it
56+
/******/ // mode & 2: merge all properties of value into the ns
57+
/******/ // mode & 4: return value when already ns object
58+
/******/ // mode & 8|1: behave like require
59+
/******/ __webpack_require__.t = function(value, mode) {
60+
/******/ if(mode & 1) value = __webpack_require__(value);
61+
/******/ if(mode & 8) return value;
62+
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
63+
/******/ var ns = Object.create(null);
64+
/******/ __webpack_require__.r(ns);
65+
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
66+
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
67+
/******/ return ns;
68+
/******/ };
69+
/******/
70+
/******/ // getDefaultExport function for compatibility with non-harmony modules
71+
/******/ __webpack_require__.n = function(module) {
72+
/******/ var getter = module && module.__esModule ?
73+
/******/ function getDefault() { return module['default']; } :
74+
/******/ function getModuleExports() { return module; };
75+
/******/ __webpack_require__.d(getter, 'a', getter);
76+
/******/ return getter;
77+
/******/ };
78+
/******/
79+
/******/ // Object.prototype.hasOwnProperty.call
80+
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
81+
/******/
82+
/******/ // __webpack_public_path__
83+
/******/ __webpack_require__.p = \\"\\";
84+
/******/
85+
/******/
86+
/******/ // Load entry module and return exports
87+
/******/ return __webpack_require__(__webpack_require__.s = 0);
88+
/******/ })
89+
/************************************************************************/
90+
/******/ ([
91+
/* 0 */
92+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
93+
94+
\\"use strict\\";
95+
__webpack_require__.r(__webpack_exports__);
96+
97+
// CONCATENATED MODULE: ./file.png
98+
/* harmony default export */ var file = (__webpack_require__.p + \\"9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\");
99+
// CONCATENATED MODULE: ./fixture.js
100+
/* eslint-disable */
101+
102+
103+
/* harmony default export */ var fixture = __webpack_exports__[\\"default\\"] = (file);
104+
105+
106+
/***/ })
107+
/******/ ]);
108+
//# sourceMappingURL=main.bundle.js.map"
109+
`;
110+
3111
exports[`loader should works with \`url-loader\` when limit is less 1`] = `"module.exports = __webpack_public_path__ + \\"9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`;
4112

5113
exports[`loader should works with \`url-loader\` when limit is more 1`] = `"module.exports = \\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAGjNJREFUeAHtnQewFMXWx/uSxZxRUTGAAcyYnwpiJhgRFRCM6GeBZaklopaUWoUo9cwIqPhhAjGAWRQTRjAgijnnLOqnAgL3fv3rR+/r29uzO7t3e3Z2t0/V1uzM9Mx0n/nP6dPnnD4tRKDAgcCBwIFK4UCdq6JDhw5dZeHChRfKc4c2NDR0kNtWrnLhWE1woKGuru4X2dKX5fbym2666aU4rc4C1pAhQ/ZetmzZ7RJQG8W5QShTOxyQwKqXuPj3hhtueN7IkSPrc7W8uXny1FNPXa++vv55eXE783j4HziwnAMIoj3+T9Ibb7zxci6uNDNPSkk1VoJqdfNY+B84YHNAYuQyKYQ2s4+b+xlgyYJrSVHXxzwZ/gcORHCgjezZjos4pw630Cdlwa0kEjNA4/hqq60mLrzwQrXV5cK2tjggcSGmTp0qZs6caTe8s33A3DeBtLJ5gv8bbbRRAJXNlBrbb9asmejcORtDUm1q161bt8333XffDfr27buCzRYTWPa5sB84kJMDzZs3bybVpxV//fXXDQ8++OC1ZY+XsTIEYOVkXTgZlwP//PPP6gcddFBm4BeAFZdzoVxeDkh9bE3ZLSpjegBWXnaFAnE5IIFVJ7tFpasHYMXlWigXiwNS2W9NwQCsWOwKheJyoHXr1kqBD8CKy7FQriAOBGAVxK5QOC4HArDiciqUK4gDAVgFsSsUjsuBAKy4nArlCuJAAFZB7AqF43IgE90Q94JaKifdFGLRokVi6dKlolWrVqJNmzaiRYvAsjgYqFkuSe+8+OGHH8T333/f6LdgwQIFpsWLFwtCRmwCWNJWI1ZYYQWx1lpriXbt2jX6cSyQEDUDLOl5F19++aV4//331e/DDz8UgKdQQnrx++uvv8TPP/+s7mXeY9VVVxVbbLGF2HLLLdVvnXXWMU/XzP+qBhZgeu+998TLL78s5s2bJ/7++2/vL/b3338Xc+bMUT8etuaaa4qddtpJ7LHHHqJ9+/ben5+WB1QlsL799lvx0ksviVdeeUX89ttvZeX1L7/8Ip544gn1A1gAbNdddxVItmqmqgIW3dsjjzwi3nnnnZK8M3QprbBrRX7JkiVF3/vrr79WYb7333+/2G233cQhhxwiqrWrrApgzZ8/XwHqo48+Kuilr7zyyir8GgV83XXXVUo42xVXXFEp6DI6Mut+KP3oZnIGVCOln0EAOlwcvQ0d7YUXXlBStWvXrqJnz55igw02yHpWJR+oaGB99dVX4o477hCffPJJrHfASM5UrIvReWQ4rmjbtq36AcLtttsu82xA9+mnnyq9jkEC/wFRFDHqRB979dVXlQSTQXJilVVWiSpeUccrEljYlqZPny6efvppp0nAfAOYB7bddlul22yzzTYCYPgi7t2xY0f169Onj5BpChRoGDzkkqYMMvQA47DDDhPdu3cXLmnpq94+7ltxwOLrnjJlimD0lYvWW2890aNHD7Hzzjurri1XWV/nkJB77723+mGaYEDxzDPPqG7U9UxGrXfddZfqJgcNGiQ23nhjV7GKOFYxwEJ5vvPOO8WLL76Yk7FMWUMpZojv+urpPuX0cPHWW28pSXbooYfmvF+pTmI4RYrJCQfiueeeEzNmzIgcsaKrjRo1Shx55JFi//33L1UVEr1PRQAL88G4ceME2yhC+T3qqKME3Z1N2vzw+uuvi59++ilzGqU9acI1BFjo7lDgH3jgAacEQze7++67xQcffCBOOOGEskndYvmTemChe6CgR422MAcgCfbbbz/B5EqTGC0++eSTjcwPzO7eYYcdlERDkS8XofvJCZ+qq542bZqYNWuWU1988803xSWXXCJOO+00sckmm5SrugU/N9XAevjhh5WSHtUqhurHHHNMo9naKMLoMnQ1WsIBPgyTu+yyi9hss82cXWTUM3wfx7QxYMAAseeee6oP6Isvvsh6JEbWMWPGKHC5JHLWBSk4kEpgAY7JkyerUZ+LRxgueRm77757o9MYSLkOPQpaY401lAKPAo0inWZCGo0YMUJgPMVSDw9MQmJff/31AqWejyTtlDpgYQuSWePEa6+95uQduhTdAqM+TXzR99xzT+YaFOXDDz9cdTN296ivSeMWcwW2LLroiRMnij///LNRNeHNrbfeqnSyAw88sNG5tO2kClh8pTfeeKNAr3AREur4448XLVu2zJx+/vnnlZRi1IgkY0QI0ys5bgq728UXXyxuuOEG8fnnn2fayh94xEeEcVXmS2h0Lk07qQLWbbfdFgkqmMjwWxPGx0mTJmWkFL43vvZqce6uvvrq4txzzxVjx45tNPjQ7b/vvvuUlR7dLI2UGmAxMkL6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\\""`;

test/__snapshots__/validate-options.test.js.snap renamed to test/__snapshots__/validation-options.test.js.snap

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,8 @@ exports[`validate options 6`] = `
5151
* options.regExp should be a string.
5252
* options.regExp should be an instance of RegExp."
5353
`;
54+
55+
exports[`validate options 7`] = `
56+
"Invalid options object. File Loader has been initialised using an options object that does not match the API schema.
57+
- options.esModules should be a boolean."
58+
`;

test/helpers/compiler.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,16 @@ const output = (config) => {
4141
export default function(fixture, config, options) {
4242
// webpack Config
4343
config = {
44-
mode: 'development',
44+
mode: config.mode || 'development',
4545
devtool: config.devtool || 'sourcemap',
4646
context: path.resolve(__dirname, '..', 'fixtures'),
4747
entry: `./${fixture}`,
4848
output: output(config),
4949
module: module(config),
5050
plugins: plugins(config),
5151
optimization: {
52-
runtimeChunk: true,
52+
minimize: false,
53+
runtimeChunk: false,
5354
},
5455
};
5556
// Compiler Options

test/loader.test.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,22 @@ describe('loader', () => {
7878

7979
expect(source).toMatchSnapshot();
8080
});
81+
82+
it('should work with ModuleConcatenationPlugin', async () => {
83+
const config = {
84+
mode: 'production',
85+
loader: {
86+
test: /(png|jpg|svg)/,
87+
options: {
88+
esModules: true,
89+
},
90+
},
91+
};
92+
93+
const stats = await webpack('fixture.js', config);
94+
95+
expect(
96+
stats.compilation.assets['main.bundle.js'].source()
97+
).toMatchSnapshot();
98+
});
8199
});

test/validate-options.test.js renamed to test/validation-options.test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,9 @@ it('validate options', () => {
5555
expect(() => validate({ regExp: 'image\\.png' })).not.toThrow();
5656
expect(() => validate({ regExp: true })).toThrowErrorMatchingSnapshot();
5757

58+
expect(() => validate({ esModules: true })).not.toThrow();
59+
expect(() => validate({ esModules: false })).not.toThrow();
60+
expect(() => validate({ esModules: 'true' })).toThrowErrorMatchingSnapshot();
61+
5862
expect(() => validate({ unknown: 'unknown' })).not.toThrow();
5963
});

0 commit comments

Comments
 (0)