实现

  1. /**
  2. * @param options
  3. * @params paths Array 自动引入js的数组
  4. * @constructor
  5. */
  6. function importCdnPlugin(options) {
  7. this.options = options;
  8. }
  9. importCdnPlugin.prototype.apply = function(compiler) {
  10. try {
  11. const paths = this.options.paths;
  12. compiler.plugin('compilation', function(compilation, options) {
  13. compilation.plugin('html-webpack-plugin-before-html-processing', function(htmlPluginData, callback) {
  14. for (let i = paths.length - 1; i >= 0; i--) {
  15. htmlPluginData.assets.js.unshift(paths[i]);
  16. }
  17. callback(null, htmlPluginData);
  18. });
  19. });
  20. }catch (e) {
  21. throw new Error('没有正确传入paths参数');
  22. }
  23. };
  24. module.exports = importCdnPlugin;

使用

  1. new importCdnPlugin({
  2. paths: [
  3. "https://***.com/static/vue.js",
  4. "https://***/static/element-ui.min.js",
  5. "https://***/static/axios.min.js",
  6. "https://***/static/echarts/5.2.2/echarts.min.js"
  7. ]
  8. }),