Add a command for stripping the dependency down
This commit is contained in:
parent
0da541528e
commit
3fe7aafb5b
|
@ -588,6 +588,10 @@ const configureExperimental = () => exec(process.execPath, ["scripts/configurePr
|
|||
task("configure-experimental", series(buildScripts, configureExperimental));
|
||||
task("configure-experimental").description = "Runs scripts/configurePrerelease.ts to prepare a build for experimental publishing";
|
||||
|
||||
const configureTSCOnly = () => exec(process.execPath, ["scripts/configureTSCBuild.js", "package.json", "src/compiler/core.ts"]);
|
||||
task("configure-tsc-only", series(buildScripts, configureNightly));
|
||||
task("configure-tsc-only").description = "Runs scripts/configureTSCOnly.ts to prepare a build for build which only has tsc ";
|
||||
|
||||
const publishNightly = () => exec("npm", ["publish", "--tag", "next"]);
|
||||
task("publish-nightly", series(task("clean"), task("LKG"), task("clean"), task("runtests-parallel"), publishNightly));
|
||||
task("publish-nightly").description = "Runs `npm publish --tag next` to create a new nightly build on npm";
|
||||
|
|
|
@ -104,6 +104,7 @@
|
|||
"scripts": {
|
||||
"prepare": "gulp build-eslint-rules",
|
||||
"pretest": "gulp tests",
|
||||
"postpublish": "gulp configure-tsc-only",
|
||||
"test": "gulp runtests-parallel --light=false",
|
||||
"test:eslint-rules": "gulp run-eslint-rules-tests",
|
||||
"build": "npm run build:compiler && npm run build:tests",
|
||||
|
|
57
scripts/configureTSCBuild.js
Normal file
57
scripts/configureTSCBuild.js
Normal file
|
@ -0,0 +1,57 @@
|
|||
"use strict";
|
||||
exports.__esModule = true;
|
||||
/// <reference types="node"/>
|
||||
var path_1 = require("path");
|
||||
var fs_1 = require("fs");
|
||||
var assert = require("assert");
|
||||
var args = process.argv.slice(2);
|
||||
// function exec(path: string, args: string[] = []) {
|
||||
// const cmdLine = ["node", path, ...args].join(" ");
|
||||
// console.log(cmdLine);
|
||||
// execSync(cmdLine);
|
||||
// }
|
||||
function main() {
|
||||
if (args.length < 1) {
|
||||
console.log("Usage:");
|
||||
console.log("\tnode configureTSCBuild.js <package.json location>");
|
||||
return;
|
||||
}
|
||||
// Acquire the version from the package.json file and modify it appropriately.
|
||||
var packageJsonFilePath = path_1.normalize(args[0]);
|
||||
var packageJsonValue = JSON.parse(fs_1.readFileSync(packageJsonFilePath).toString());
|
||||
// Remove the bin section from the current package
|
||||
delete packageJsonValue.bin;
|
||||
// Set the new name
|
||||
packageJsonValue.name = "@orta/tsc";
|
||||
fs_1.writeFileSync(packageJsonFilePath, JSON.stringify(packageJsonValue, /*replacer:*/ undefined, /*space:*/ 4));
|
||||
// Remove the files which aren't use when just using the API
|
||||
var toRemove = [
|
||||
// JS Files
|
||||
"tsserver.js",
|
||||
"tsserverlibrary.js",
|
||||
"typescriptServices.js",
|
||||
"typingsInstaller.js",
|
||||
"tsc.js",
|
||||
// DTS files
|
||||
"typescriptServices.d.ts",
|
||||
"tsserverlibrary.d.ts"
|
||||
];
|
||||
// Get a link to the main dependency JS file, then remove the sibling JS files referenced above
|
||||
var lib = path_1.join(path_1.dirname(packageJsonFilePath), packageJsonValue.main);
|
||||
var libPath = path_1.dirname(lib);
|
||||
toRemove.forEach(function (file) {
|
||||
var path = path_1.join(libPath, file);
|
||||
if (fs_1.existsSync(path))
|
||||
fs_1.unlinkSync(path);
|
||||
});
|
||||
///////////////////////////////////
|
||||
// This section verifies that the build of TypeScript compiles and emits
|
||||
var ts = require("../" + lib);
|
||||
var source = "let x: string = 'string'";
|
||||
var results = ts.transpileModule(source, {
|
||||
compilerOptions: { module: ts.ModuleKind.CommonJS }
|
||||
});
|
||||
console.log(Object.keys(results));
|
||||
assert(results.outputText.trim() === "var x = 'string';", "Running typescript with " + packageJsonValue.name + " did not return the expected results, got: " + results.outputText);
|
||||
}
|
||||
main();
|
82
scripts/configureTSCBuild.ts
Normal file
82
scripts/configureTSCBuild.ts
Normal file
|
@ -0,0 +1,82 @@
|
|||
/// <reference types="node"/>
|
||||
import { normalize, dirname, join } from "path";
|
||||
import { readFileSync, writeFileSync, unlinkSync, existsSync } from "fs";
|
||||
import assert = require("assert");
|
||||
import { execSync } from "child_process";
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* A minimal description for a parsed package.json object.
|
||||
*/
|
||||
interface PackageJson {
|
||||
name: string;
|
||||
bin: {};
|
||||
main: string;
|
||||
}
|
||||
|
||||
// function exec(path: string, args: string[] = []) {
|
||||
// const cmdLine = ["node", path, ...args].join(" ");
|
||||
// console.log(cmdLine);
|
||||
// execSync(cmdLine);
|
||||
// }
|
||||
|
||||
function main(): void {
|
||||
if (args.length < 1) {
|
||||
console.log("Usage:");
|
||||
console.log("\tnode configureTSCBuild.js <package.json location>");
|
||||
return;
|
||||
}
|
||||
|
||||
// Acquire the version from the package.json file and modify it appropriately.
|
||||
const packageJsonFilePath = normalize(args[0]);
|
||||
const packageJsonValue: PackageJson = JSON.parse(readFileSync(packageJsonFilePath).toString());
|
||||
|
||||
// Remove the bin section from the current package
|
||||
delete packageJsonValue.bin;
|
||||
|
||||
// Set the new name
|
||||
packageJsonValue.name = "@orta/tsc";
|
||||
|
||||
writeFileSync(packageJsonFilePath, JSON.stringify(packageJsonValue, /*replacer:*/ undefined, /*space:*/ 4));
|
||||
|
||||
// Remove the files which aren't use when just using the API
|
||||
const toRemove = [
|
||||
// JS Files
|
||||
"tsserver.js",
|
||||
"tsserverlibrary.js",
|
||||
"typescriptServices.js",
|
||||
"typingsInstaller.js",
|
||||
"tsc.js",
|
||||
// DTS files
|
||||
"typescriptServices.d.ts",
|
||||
"tsserverlibrary.d.ts"
|
||||
];
|
||||
|
||||
// Get a link to the main dependency JS file, then remove the sibling JS files referenced above
|
||||
const lib = join(dirname(packageJsonFilePath), packageJsonValue.main);
|
||||
const libPath = dirname(lib);
|
||||
toRemove.forEach(file => {
|
||||
const path = join(libPath, file);
|
||||
if (existsSync(path)) unlinkSync(path);
|
||||
});
|
||||
|
||||
///////////////////////////////////
|
||||
|
||||
// This section verifies that the build of TypeScript compiles and emits
|
||||
|
||||
const ts = require("../" + lib);
|
||||
const source = "let x: string = 'string'";
|
||||
|
||||
const results =ts.transpileModule(source, {
|
||||
compilerOptions: { module: ts.ModuleKind.CommonJS }
|
||||
});
|
||||
console.log(Object.keys(results));
|
||||
|
||||
assert(results.outputText.trim() === "var x = 'string';", `Running typescript with ${packageJsonValue.name} did not return the expected results, got: ${results.outputText}`);
|
||||
|
||||
|
||||
}
|
||||
|
||||
main();
|
Loading…
Reference in a new issue