API загрузчика Webpack: императивно переносимый код - PullRequest
1 голос
/ 25 марта 2019

Я пишу загрузчик Webpack, который передает .vue файлы в компоненты React:

https://github.com/LukasBombach/single-file-components

Файл .vue может состоять из <template> <script> и<style> тег.В качестве части моей реализации я хочу обязательно загрузить часть <script> и передать ее через Webpack для дальнейшей обработки.Поэтому, если у меня есть этот .vue файл:

<template>
  <div>hello world</div>
</template>

<script>
import something from "something";

export default {
  data() {
    return {
      baz: "baz"
    };
  }
};
</script>

, я в основном хочу сделать это (фиктивный код с целью объяснения):

myLoader.js

function myLoader(source) {
  // should return everything between <script> and </script> as a string
  const scriptCode = getCodeInsideScriptTags(source); 

  // transpiledJsCode should be es5 code that has been transpiled by Webpack
  const transpiledJsCode = this.theWebpackFunctionIAmLookingFor(scriptCode);

  // Now I can process the transpiledJsCode 
}

Есть ли способ сделать это?Я нашел [this.loadModule][1] и this.callback, но если я сделаю это:

const request = `${this.loader.resourcePath}.js`;
this.loadModule(request);

он сделает попытаться пройти через загрузчик js, но все это говорит о том, чтоон не может найти файл .js, который я ищу.И если я сделаю это:

const scriptCode = getCodeInsideScriptTags(source); 
this.loader.resourcePath += ".js";
this.loader.callback(null, scriptCode);

, он на самом деле не переносит код сценария, а просто возвращает его.

Я предполагаю, что второе, что я делаю, - это хорошее преимущество, но, возможно,Я что-то упустил.

...