Skip to content

Commit

Permalink
Improve plugin-vue output (#1310)
Browse files Browse the repository at this point in the history
* Improve plugin-vue output

* Clean up empty files
  • Loading branch information
drwpow authored Oct 14, 2020
1 parent bf29ebd commit e5f73c5
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 23 deletions.
4 changes: 4 additions & 0 deletions plugins/plugin-vue/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,10 @@ module.exports = function plugin(snowpackConfig) {
if (sourceMaps && js.map) output['.js'].map += JSON.stringify(js.map);
}

// clean up
if (!output['.js'].code) delete output['.js'];
if (!output['.css'].code) delete output['.css'];

return output;
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@

exports[`plugin vue with jsx 1`] = `
Object {
".css": Object {
"code": "",
"map": "",
},
".js": Object {
"code": "import { Fragment } from 'vue';
import {createVNode, isVNode} from 'vue';
Expand All @@ -31,10 +27,6 @@ export default defineComponent({

exports[`plugin vue with ts 1`] = `
Object {
".css": Object {
"code": "",
"map": "",
},
".js": Object {
"code": "import {defineComponent} from \\"vue\\";
const defaultExport = defineComponent({
Expand All @@ -58,10 +50,6 @@ export default defaultExport",

exports[`plugin vue with tsx 1`] = `
Object {
".css": Object {
"code": "",
"map": "",
},
".js": Object {
"code": "import { Fragment } from 'vue';
import {createVNode, isVNode} from 'vue';
Expand Down
4 changes: 0 additions & 4 deletions plugins/plugin-vue/test/__snapshots__/plugin.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,6 @@ export default defaultExport",

exports[`plugin base only tpl 1`] = `
Object {
".css": Object {
"code": "",
"map": "",
},
".js": Object {
"code": "const defaultExport = {};
import { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock } from \\"vue\\"
Expand Down
35 changes: 28 additions & 7 deletions snowpack/src/build/build-pipeline.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import path from 'path';
import {validatePluginLoadResult} from '../config';
import {logger} from '../logger';
import {SnowpackBuildMap, SnowpackConfig, SnowpackPlugin, PluginTransformResult} from '../types/snowpack';
import {
SnowpackBuildMap,
SnowpackConfig,
SnowpackPlugin,
PluginTransformResult,
} from '../types/snowpack';
import {getExt, readFile, replaceExt} from '../util';
import {SourceMapConsumer, SourceMapGenerator, RawSourceMap} from 'source-map';

Expand Down Expand Up @@ -84,6 +89,9 @@ async function runPipelineLoadStep(

// if source maps disabled, don’t return any
if (!sourceMaps) result[ext].map = undefined;

// clean up empty files
if (!result[ext].code) delete result[ext];
});
return result;
}
Expand All @@ -101,10 +109,14 @@ async function runPipelineLoadStep(
};
}

async function composeSourceMaps(id: string, base: string | RawSourceMap, derived: string | RawSourceMap) : Promise<string> {
async function composeSourceMaps(
id: string,
base: string | RawSourceMap,
derived: string | RawSourceMap,
): Promise<string> {
const [baseMap, transformedMap] = await Promise.all([
new SourceMapConsumer(base),
new SourceMapConsumer(derived)
new SourceMapConsumer(derived),
]);
try {
const generator = SourceMapGenerator.fromSourceMap(transformedMap);
Expand Down Expand Up @@ -159,22 +171,31 @@ async function runPipelineTransformStep(
// V2 API, simple string variant
output[destExt].code = result;
output[destExt].map = undefined;
} else if (result && typeof result === 'object' && (result as PluginTransformResult).contents) {
} else if (
result &&
typeof result === 'object' &&
(result as PluginTransformResult).contents
) {
// V2 API, structured result variant
output[destExt].code = (result as PluginTransformResult).contents;
const map = (result as PluginTransformResult).map;
let outputMap: string | undefined = undefined;
if (map && sourceMaps) { // if source maps disabled, don’t return any
if (map && sourceMaps) {
// if source maps disabled, don’t return any
if (output[destExt].map) {
outputMap = await composeSourceMaps(filePath, output[destExt].map!, map);
} else {
outputMap = typeof map === 'object' ? JSON.stringify(map) : map;
}
}
output[destExt].map = outputMap;
} else if (result && typeof result === 'object' && (result as unknown as {result: string}).result) {
} else if (
result &&
typeof result === 'object' &&
((result as unknown) as {result: string}).result
) {
// V1 API, deprecated
output[destExt].code = (result as unknown as {result: string}).result;
output[destExt].code = ((result as unknown) as {result: string}).result;
output[destExt].map = undefined;
}
}
Expand Down

1 comment on commit e5f73c5

@vercel
Copy link

@vercel vercel bot commented on e5f73c5 Oct 14, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.