diff --git a/.gitignore b/.gitignore
index 385096ae7..59fd40140 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
# generated files
*.map
+*.tgz
.baseDir.ts
.sublime-grunt.cache
tscommand*.tmp.txt
@@ -7,6 +8,7 @@ tscommand*.tmp.txt
node_modules/
dist/
+package/
*.js
!gruntfile.js
@@ -31,3 +33,7 @@ tags
TestRunResult.txt
.testsapprun
+
+tns-core-modules.base.d.ts
+tns-core-modules.d.ts
+tns-core-modules.es6.d.ts
diff --git a/gruntfile.js b/gruntfile.js
index bfc205437..a5203e498 100644
--- a/gruntfile.js
+++ b/gruntfile.js
@@ -1,5 +1,6 @@
var tsconfig = require('./tsconfig.json');
var shelljs = require("shelljs");
+var path = require("path");
module.exports = function(grunt) {
if (grunt.option('profile')) {
@@ -140,12 +141,12 @@ module.exports = function(grunt) {
srcAppsDir: "./apps",
packageJsonFilePath: "./package.json",
outDir: "./bin/dist",
- outModulesDir: tsconfig.compilerOptions.outDir,
+ outModulesDir: tsconfig.compilerOptions.outDir || "./bin/dist/modules",
outAppsDir: "./bin/dist/apps",
outTsAppsDir: "./bin/dist/ts-apps",
outApiRefDir: "./bin/dist/api-ref"
};
-
+
var nodeTestEnv = JSON.parse(JSON.stringify(process.env));
nodeTestEnv.NODE_PATH = localCfg.outModulesDir;
@@ -178,6 +179,8 @@ module.exports = function(grunt) {
tsOptions.removeComments = !grunt.option('leavecomments') || '';
tsOptions.compiler = "node_modules/typescript/bin/tsc";
tsOptions.failOnTypeErrors = true;
+ tsOptions.outDir = localCfg.outModulesDir;
+ tsOptions.additionalFlags = "--outDir " + localCfg.outModulesDir;
grunt.initConfig({
localCfg : localCfg,
@@ -341,8 +344,12 @@ module.exports = function(grunt) {
passThrough: true,
},
outDir: localCfg.outModulesDir,
+ dest: localCfg.outModulesDir,
options: tsOptions
},
+ "build-inplace": {
+ tsconfig: 'tsconfig.json'
+ },
buildNodeTests: {
src: [
'js-libs/easysax/**/*.ts',
@@ -351,6 +358,7 @@ module.exports = function(grunt) {
'es-collections.d.ts',
],
outDir: localCfg.outModulesDir,
+ dest: localCfg.outModulesDir,
options: tsOptions
},
buildDts: {
@@ -365,6 +373,7 @@ module.exports = function(grunt) {
'!ios.d.ts',
],
outDir: localCfg.outModulesDir,
+ dest: localCfg.outModulesDir,
options: tsOptions
},
testCombinedDts: {
@@ -372,6 +381,7 @@ module.exports = function(grunt) {
pathModule.join(localCfg.outModulesDir, 'tns-core-modules.d.ts'),
],
outDir: localCfg.outModulesDir,
+ dest: localCfg.outModulesDir,
options: tsOptions
}
},
@@ -486,6 +496,48 @@ module.exports = function(grunt) {
grunt.task.run(task.name.join(":"));
}
};
+ function writeDtsFile(dtsFiles, outDir, outFile) {
+ var dtsLines = dtsFiles.map(function(dtsFile) {
+ return '/// ';
+ });
+ var combinedDtsPath = pathModule.join(outDir, outFile);
+ grunt.file.write(combinedDtsPath, dtsLines.join('\n'));
+ }
+ function generateModulesDts(outDir) {
+ var angularConflicts = ['module.d.ts']
+ var angularExcludes = angularConflicts.map(function(file) {
+ return '!' + file;
+ })
+ var nonES6Files = [
+ 'es-collections.d.ts',
+ 'es6-promise.d.ts',
+ 'es6.d.ts',
+ 'weakmap.d.ts',
+ ];
+ var es6Excludes = nonES6Files.map(function(file) {
+ return '!' + file;
+ })
+ var dtsFiles = grunt.file.expand({cwd: outDir}, [
+ "**/*.d.ts",
+ //Exclude the d.ts files in the apps folder - these are part of the apps and are already packed there!
+ "!apps/**",
+ "!ts-apps/**",
+ "!node-tests/**",
+ "!org.nativescript.widgets.d.ts",
+ "!android17.d.ts",
+ "!**/*.android.d.ts",
+ "!ios.d.ts",
+ "!**/*.ios.d.ts",
+ "!tns-core-modules.d.ts"
+ ].concat(localCfg.defaultExcludes).concat(es6Excludes).concat(angularExcludes));
+ dtsFiles.sort();
+
+ writeDtsFile(dtsFiles, outDir, 'tns-core-modules.base.d.ts');
+ var es6Files = angularConflicts.concat(['tns-core-modules.base.d.ts']);
+ writeDtsFile(es6Files, outDir, 'tns-core-modules.es6.d.ts');
+ var allFiles = angularConflicts.concat(nonES6Files).concat(['tns-core-modules.base.d.ts']);
+ writeDtsFile(allFiles, outDir, 'tns-core-modules.d.ts');
+ };
grunt.registerTask("processEachApp", function(outAppsDir, pkgAppNameSuffix){
var allApps = getApps();
@@ -583,39 +635,8 @@ module.exports = function(grunt) {
grunt.registerTask("distribute-ts-apps-files", [
"copy:readyTsAppFiles"
]);
- function writeDtsFile(dtsFiles, outFile) {
- var dtsLines = dtsFiles.map(function(dtsFile) {
- return '/// ';
- });
- var combinedDtsPath = pathModule.join(localCfg.outModulesDir, outFile);
- grunt.file.write(combinedDtsPath, dtsLines.join('\n'));
- }
- grunt.registerTask("generate-tns-core-modules-dts", function() {
- var angularConflicts = ['module.d.ts']
- var angularExcludes = angularConflicts.map(function(file) {
- return '!' + file;
- })
- var nonES6Files = [
- 'es-collections.d.ts',
- 'es6-promise.d.ts',
- 'es6.d.ts',
- 'weakmap.d.ts',
- ];
- var es6Excludes = nonES6Files.map(function(file) {
- return '!' + file;
- })
- var dtsFiles = grunt.file.expand({cwd: localCfg.outModulesDir}, [
- '**/*.d.ts',
- '!tns-core-modules.d.ts'
- ].concat(localCfg.defaultExcludes).concat(es6Excludes).concat(angularExcludes));
- dtsFiles.sort();
-
- writeDtsFile(dtsFiles, 'tns-core-modules.base.d.ts');
- var es6Files = angularConflicts.concat(['tns-core-modules.base.d.ts']);
- writeDtsFile(es6Files, 'tns-core-modules.es6.d.ts');
- var allFiles = angularConflicts.concat(nonES6Files).concat(['tns-core-modules.base.d.ts']);
- writeDtsFile(allFiles, 'tns-core-modules.d.ts');
- });
+ grunt.registerTask("generate-tns-core-modules-dev-dts", generateModulesDts.bind(null, "."));
+ grunt.registerTask("generate-tns-core-modules-dts", generateModulesDts.bind(null, localCfg.outModulesDir));
//aliasing pack-modules for backwards compatibility
grunt.registerTask("pack-modules", [
"compile-modules",
@@ -671,4 +692,9 @@ module.exports = function(grunt) {
"env:nodeTests",
"exec:mochaNode", //spawn a new process to use the new NODE_PATH
]);
+
+ grunt.registerTask("inplace", [
+ "ts:build-inplace",
+ "generate-tns-core-modules-dev-dts"
+ ]);
};
diff --git a/package.json b/package.json
index d544f2c6f..82f5391cf 100644
--- a/package.json
+++ b/package.json
@@ -8,11 +8,18 @@
"url": "https://github.com/NativeScript/NativeScript"
},
"files": [
- "**/*.*",
- "**/*",
- "!.baseDir.*",
+ "**/*.d.ts",
+ "**/*.js",
+ "!android17.d.ts",
+ "!ios.d.ts",
+ "!bin/",
+ "!apps/",
+ "!build/",
"!node-tests/",
- "!apps/"
+ "!declarations.android.d.ts",
+ "!declarations.ios.d.ts",
+ "!gruntfile.js",
+ "!org.nativescript.widgets.d.ts"
],
"license": "Apache-2.0",
"devDependencies": {
diff --git a/tsconfig.json b/tsconfig.json
index 83fbd385a..493b49479 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -10,7 +10,6 @@
"noImplicitAny": false,
"removeComments": true,
"noImplicitUseStrict": true,
- "outDir": "bin/dist/modules",
"experimentalDecorators": true
},
"filesGlob": [