Skip to content

Commit

Permalink
Merge branch 'marijnh-restore-emit-file'
Browse files Browse the repository at this point in the history
  • Loading branch information
ezolenko committed Nov 5, 2019
2 parents 330a0ce + bc5b419 commit c03143b
Show file tree
Hide file tree
Showing 9 changed files with 81 additions and 82 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@ See [#108](https://github.com/ezolenko/rollup-plugin-typescript2/issues/108)
* `useTsconfigDeclarationDir`: false

If true, declaration files will be emitted in the directory given in the tsconfig. If false, the declaration files will be placed inside the destination directory given in the Rollup configuration.

Set to false if any other rollup plugins need access to declaration files.

* `typescript`: typescript module installed with the plugin

Expand Down Expand Up @@ -206,7 +208,7 @@ Otherwise the plugin should work in watch mode. Make sure to run a normal build
### Requirements

TypeScript `2.4+`
Rollup `1.26.0+`
Rollup `1.26.3+`
Node `6.4.0+` (basic es6 support)

### Reporting bugs
Expand Down
2 changes: 1 addition & 1 deletion dist/index.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

44 changes: 22 additions & 22 deletions dist/rollup-plugin-typescript2.cjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -27396,11 +27396,9 @@ const typescript = (options) => {
}
return undefined;
},
generateBundle(bundleOptions, _bundle, isWrite) {
generateBundle(bundleOptions) {
self._ongenerate();
if (isWrite) {
self._onwrite(bundleOptions);
}
self._onwrite.call(this, bundleOptions);
},
_ongenerate() {
context.debug(() => `generating target ${generateRound + 1}`);
Expand All @@ -27424,7 +27422,7 @@ const typescript = (options) => {
cache().done();
generateRound++;
},
_onwrite({ file, dir }) {
_onwrite(_output) {
if (!parsedConfig.options.declaration)
return;
lodash_3(parsedConfig.fileNames, (name) => {
Expand All @@ -27441,32 +27439,34 @@ const typescript = (options) => {
if (out.dts)
declarations[key] = { type: out.dts, map: out.dtsmap };
});
const bundleFile = file;
const outputDir = dir;
const writeDeclaration = (key, extension, entry) => {
const emitDeclaration = (key, extension, entry) => {
if (!entry)
return;
let fileName = entry.name;
if (fileName.includes("?")) // HACK for rollup-plugin-vue, it creates virtual modules in form 'file.vue?rollup-plugin-vue=script.ts'
fileName = fileName.split("?", 1) + extension;
let writeToPath;
// If for some reason no 'dest' property exists or if 'useTsconfigDeclarationDir' is given in the plugin options,
// use the path provided by Typescript's LanguageService.
if ((!bundleFile && !outputDir) || pluginOptions.useTsconfigDeclarationDir)
writeToPath = fileName;
// If 'useTsconfigDeclarationDir' is given in the
// plugin options, directly write to the path provided
// by Typescript's LanguageService (which may not be
// under Rollup's output directory, and thus can't be
// emitted as an asset).
if (pluginOptions.useTsconfigDeclarationDir) {
context.debug(() => `${safe_5("emitting declarations")} for '${key}' to '${fileName}'`);
tsModule.sys.writeFile(fileName, entry.text, entry.writeByteOrderMark);
}
else {
// Otherwise, take the directory name from the path and make sure it is absolute.
const destDirname = bundleFile ? path.dirname(bundleFile) : outputDir;
const destDirectory = path.isAbsolute(destDirname) ? destDirname : path.join(process.cwd(), destDirname);
writeToPath = path.join(destDirectory, path.relative(process.cwd(), fileName));
const relativePath = path.relative(process.cwd(), fileName);
context.debug(() => `${safe_5("emitting declarations")} for '${key}' to '${relativePath}'`);
this.emitFile({
type: "asset",
source: entry.text,
fileName: relativePath,
});
}
context.debug(() => `${safe_5("writing declarations")} for '${key}' to '${writeToPath}'`);
// Write the declaration file to disk.
tsModule.sys.writeFile(writeToPath, entry.text, entry.writeByteOrderMark);
};
lodash_3(declarations, ({ type, map }, key) => {
writeDeclaration(key, ".d.ts", type);
writeDeclaration(key, ".d.ts.map", map);
emitDeclaration(key, ".d.ts", type);
emitDeclaration(key, ".d.ts.map", map);
});
},
};
Expand Down
2 changes: 1 addition & 1 deletion dist/rollup-plugin-typescript2.cjs.js.map

Large diffs are not rendered by default.

46 changes: 23 additions & 23 deletions dist/rollup-plugin-typescript2.es.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { emptyDirSync, readJsonSync, writeJsonSync, ensureFileSync, removeSync,
import fs, { existsSync, readdirSync, renameSync, readFileSync } from 'fs';
import util from 'util';
import os from 'os';
import path__default, { normalize as normalize$1, join, dirname, isAbsolute, relative } from 'path';
import path__default, { normalize as normalize$1, join, dirname, relative } from 'path';
import { sync as sync$4 } from 'resolve';

var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
Expand Down Expand Up @@ -27390,11 +27390,9 @@ const typescript = (options) => {
}
return undefined;
},
generateBundle(bundleOptions, _bundle, isWrite) {
generateBundle(bundleOptions) {
self._ongenerate();
if (isWrite) {
self._onwrite(bundleOptions);
}
self._onwrite.call(this, bundleOptions);
},
_ongenerate() {
context.debug(() => `generating target ${generateRound + 1}`);
Expand All @@ -27418,7 +27416,7 @@ const typescript = (options) => {
cache().done();
generateRound++;
},
_onwrite({ file, dir }) {
_onwrite(_output) {
if (!parsedConfig.options.declaration)
return;
lodash_3(parsedConfig.fileNames, (name) => {
Expand All @@ -27435,32 +27433,34 @@ const typescript = (options) => {
if (out.dts)
declarations[key] = { type: out.dts, map: out.dtsmap };
});
const bundleFile = file;
const outputDir = dir;
const writeDeclaration = (key, extension, entry) => {
const emitDeclaration = (key, extension, entry) => {
if (!entry)
return;
let fileName = entry.name;
if (fileName.includes("?")) // HACK for rollup-plugin-vue, it creates virtual modules in form 'file.vue?rollup-plugin-vue=script.ts'
fileName = fileName.split("?", 1) + extension;
let writeToPath;
// If for some reason no 'dest' property exists or if 'useTsconfigDeclarationDir' is given in the plugin options,
// use the path provided by Typescript's LanguageService.
if ((!bundleFile && !outputDir) || pluginOptions.useTsconfigDeclarationDir)
writeToPath = fileName;
// If 'useTsconfigDeclarationDir' is given in the
// plugin options, directly write to the path provided
// by Typescript's LanguageService (which may not be
// under Rollup's output directory, and thus can't be
// emitted as an asset).
if (pluginOptions.useTsconfigDeclarationDir) {
context.debug(() => `${safe_5("emitting declarations")} for '${key}' to '${fileName}'`);
tsModule.sys.writeFile(fileName, entry.text, entry.writeByteOrderMark);
}
else {
// Otherwise, take the directory name from the path and make sure it is absolute.
const destDirname = bundleFile ? dirname(bundleFile) : outputDir;
const destDirectory = isAbsolute(destDirname) ? destDirname : join(process.cwd(), destDirname);
writeToPath = join(destDirectory, relative(process.cwd(), fileName));
const relativePath = relative(process.cwd(), fileName);
context.debug(() => `${safe_5("emitting declarations")} for '${key}' to '${relativePath}'`);
this.emitFile({
type: "asset",
source: entry.text,
fileName: relativePath,
});
}
context.debug(() => `${safe_5("writing declarations")} for '${key}' to '${writeToPath}'`);
// Write the declaration file to disk.
tsModule.sys.writeFile(writeToPath, entry.text, entry.writeByteOrderMark);
};
lodash_3(declarations, ({ type, map }, key) => {
writeDeclaration(key, ".d.ts", type);
writeDeclaration(key, ".d.ts.map", map);
emitDeclaration(key, ".d.ts", type);
emitDeclaration(key, ".d.ts.map", map);
});
},
};
Expand Down
2 changes: 1 addition & 1 deletion dist/rollup-plugin-typescript2.es.js.map

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"tslib": "1.10.0"
},
"peerDependencies": {
"rollup": ">=1.26.0",
"rollup": ">=1.26.3",
"typescript": ">=2.4.0"
},
"devDependencies": {
Expand All @@ -54,7 +54,7 @@
"lodash": "4.17.15",
"object-hash": "1.3.1",
"rimraf": "3.0.0",
"rollup": "^1.26.0 ",
"rollup": "^1.26.3 ",
"rollup-plugin-commonjs": "10.1.0",
"rollup-plugin-node-resolve": "5.2.0",
"rollup-plugin-re": "1.0.7",
Expand Down
53 changes: 25 additions & 28 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { parseTsConfig } from "./parse-tsconfig";
import { printDiagnostics } from "./print-diagnostics";
import { TSLIB, TSLIB_VIRTUAL, tslibSource, tslibVersion } from "./tslib";
import { blue, red, yellow, green } from "colors/safe";
import { dirname, isAbsolute, join, relative } from "path";
import { relative } from "path";
import { normalize } from "./normalize";
import { satisfies } from "semver";
import findCacheDir from "find-cache-dir";
Expand Down Expand Up @@ -269,13 +269,10 @@ const typescript: PluginImpl<Partial<IOptions>> = (options) =>
return undefined;
},

generateBundle(bundleOptions: OutputOptions, _bundle: any, isWrite: boolean): void
generateBundle(this: PluginContext, bundleOptions: OutputOptions): void
{
self._ongenerate();
if (isWrite)
{
self._onwrite(bundleOptions);
}
self._onwrite.call(this, bundleOptions);
},

_ongenerate(): void
Expand Down Expand Up @@ -316,7 +313,7 @@ const typescript: PluginImpl<Partial<IOptions>> = (options) =>
generateRound++;
},

_onwrite({ file, dir }: OutputOptions): void
_onwrite(this: PluginContext, _output: OutputOptions): void
{
if (!parsedConfig.options.declaration)
return;
Expand All @@ -339,10 +336,7 @@ const typescript: PluginImpl<Partial<IOptions>> = (options) =>
declarations[key] = { type: out.dts, map: out.dtsmap };
});

const bundleFile = file;
const outputDir = dir;

const writeDeclaration = (key: string, extension: string, entry?: tsTypes.OutputFile) =>
const emitDeclaration = (key: string, extension: string, entry?: tsTypes.OutputFile) =>
{
if (!entry)
return;
Expand All @@ -351,29 +345,32 @@ const typescript: PluginImpl<Partial<IOptions>> = (options) =>
if (fileName.includes("?")) // HACK for rollup-plugin-vue, it creates virtual modules in form 'file.vue?rollup-plugin-vue=script.ts'
fileName = fileName.split("?", 1) + extension;

let writeToPath: string;
// If for some reason no 'dest' property exists or if 'useTsconfigDeclarationDir' is given in the plugin options,
// use the path provided by Typescript's LanguageService.
if ((!bundleFile && !outputDir) || pluginOptions.useTsconfigDeclarationDir)
writeToPath = fileName;
else
// If 'useTsconfigDeclarationDir' is given in the
// plugin options, directly write to the path provided
// by Typescript's LanguageService (which may not be
// under Rollup's output directory, and thus can't be
// emitted as an asset).
if (pluginOptions.useTsconfigDeclarationDir)
{
// Otherwise, take the directory name from the path and make sure it is absolute.
const destDirname = bundleFile ? dirname(bundleFile) : outputDir as string;
const destDirectory = isAbsolute(destDirname) ? destDirname : join(process.cwd(), destDirname);
writeToPath = join(destDirectory, relative(process.cwd(), fileName));
context.debug(() => `${blue("emitting declarations")} for '${key}' to '${fileName}'`);
tsModule.sys.writeFile(fileName, entry.text, entry.writeByteOrderMark);
}
else
{
const relativePath = relative(process.cwd(), fileName);
context.debug(() => `${blue("emitting declarations")} for '${key}' to '${relativePath}'`);
this.emitFile({
type: "asset",
source: entry.text,
fileName: relativePath,
});
}

context.debug(() => `${blue("writing declarations")} for '${key}' to '${writeToPath}'`);

// Write the declaration file to disk.
tsModule.sys.writeFile(writeToPath, entry.text, entry.writeByteOrderMark);
};

_.each(declarations, ({ type, map }, key) =>
{
writeDeclaration(key, ".d.ts", type);
writeDeclaration(key, ".d.ts.map", map);
emitDeclaration(key, ".d.ts", type);
emitDeclaration(key, ".d.ts.map", map);
});
},
};
Expand Down

0 comments on commit c03143b

Please sign in to comment.