mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-21 14:50:37 +03:00
overlayscrollbars-ngx: aot compilation support
This commit is contained in:
@@ -61,18 +61,56 @@ gulp.task('prepare', function (done) {
|
|||||||
|
|
||||||
gulp.task('ngc', function (done) {
|
gulp.task('ngc', function (done) {
|
||||||
sh.echo('> Compile with "ngc"');
|
sh.echo('> Compile with "ngc"');
|
||||||
|
|
||||||
|
// aot compile .metadata.json: https://github.com/ng-packagr/ng-packagr/blob/master/docs/DESIGN.md#build-artefacts
|
||||||
|
/*
|
||||||
|
* make sure metadata.json origins paths are correct, to do that
|
||||||
|
* create a aotEntry dummy file which for that purpose
|
||||||
|
*/
|
||||||
|
let aotEntryFile = `${filesInfo.typingsFolder}/index.ts`;
|
||||||
|
let srcEntryFile = `${filesInfo.srcFolder}/index.ts`;
|
||||||
|
let aotImportPath = path.relative(path.dirname(path.resolve(aotEntryFile)), path.dirname(path.resolve(srcEntryFile)));
|
||||||
|
sh.mkdir('-p', path.dirname(aotEntryFile));
|
||||||
|
sh.ShellString(`export * from '${aotImportPath.split(path.sep).join('/')}/index'`).to(aotEntryFile);
|
||||||
|
|
||||||
let newTsconfigJson = {
|
let newTsconfigJson = {
|
||||||
...tsconfigJson,
|
...tsconfigJson,
|
||||||
|
// https://github.com/angular/angular/blob/master/packages/compiler-cli/src/transformers/api.ts#L40
|
||||||
|
angularCompilerOptions: {
|
||||||
|
...tsconfigJson.angularCompilerOptions,
|
||||||
|
skipMetadataEmit: false,
|
||||||
|
strictMetadataEmit: true,
|
||||||
|
fullTemplateTypeCheck: true,
|
||||||
|
flatModuleOutFile: `${packageName}.js`,
|
||||||
|
flatModuleId: packageName
|
||||||
|
},
|
||||||
compilerOptions: {
|
compilerOptions: {
|
||||||
...tsconfigJson.compilerOptions,
|
...tsconfigJson.compilerOptions,
|
||||||
declarationDir: filesInfo.ngcFolder,
|
declarationDir: filesInfo.ngcFolder,
|
||||||
outDir: filesInfo.ngcFolder,
|
outDir: filesInfo.ngcFolder,
|
||||||
},
|
},
|
||||||
include: [filesInfo.srcFolder],
|
files: [aotEntryFile],
|
||||||
|
include: undefined,
|
||||||
exclude: [filesInfo.distFolder, filesInfo.exampleFolder, 'node_modules']
|
exclude: [filesInfo.distFolder, filesInfo.exampleFolder, 'node_modules']
|
||||||
};
|
};
|
||||||
sh.ShellString(JSON.stringify(newTsconfigJson, null, 4)).to(filesInfo.tsconfigJsonPath);
|
sh.ShellString(JSON.stringify(newTsconfigJson, null, 4)).to(filesInfo.tsconfigJsonPath);
|
||||||
sh.exec('ngc -p tsconfig.json');
|
sh.exec('ngc -p tsconfig.json');
|
||||||
|
|
||||||
|
// delete the aotEntry dummy file
|
||||||
|
sh.rm('-f', aotEntryFile);
|
||||||
|
|
||||||
|
// rename and move metadata.json to correct folder
|
||||||
|
let aotMetadataJsonPath = path.normalize(`${filesInfo.ngcFolder}/${filesInfo.typingsFolder}/${packageName}.metadata.json`);
|
||||||
|
let aotMetadataJsonPathNew = path.normalize(`${filesInfo.typingsFolder}/index.metadata.json`);
|
||||||
|
if (sh.test('-f', aotMetadataJsonPath)) {
|
||||||
|
sh.echo(chalk.yellowBright(' [metadata.json]: ') + chalk.greenBright(`${aotMetadataJsonPath} → ${aotMetadataJsonPathNew}`));
|
||||||
|
sh.mv(aotMetadataJsonPath, aotMetadataJsonPathNew);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sh.echo(chalk.redBright(`Couldn't find metadata.json: "${aotMetadataJsonPath}"`));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -85,6 +123,7 @@ gulp.task('tsconfigJson', function (done) {
|
|||||||
declarationDir: filesInfo.typingsFolder,
|
declarationDir: filesInfo.typingsFolder,
|
||||||
outDir: filesInfo.distFolder,
|
outDir: filesInfo.distFolder,
|
||||||
},
|
},
|
||||||
|
files: undefined,
|
||||||
include: [filesInfo.srcFolder],
|
include: [filesInfo.srcFolder],
|
||||||
exclude: [filesInfo.distFolder, filesInfo.exampleFolder, 'node_modules']
|
exclude: [filesInfo.distFolder, filesInfo.exampleFolder, 'node_modules']
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
{"__symbolic":"module","version":4,"metadata":{"OverlayScrollbarsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"overlay-scrollbars","template":"<ng-content></ng-content>","styles":[":host { display: block; }"]}]}],"members":{"_options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":5},"arguments":["options"]}]}],"_extensions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":5},"arguments":["extensions"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":14,"character":30}]}],"osInstance":[{"__symbolic":"method"}],"osTarget":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"OverlayscrollbarsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"imports":[],"declarations":[{"__symbolic":"reference","name":"OverlayScrollbarsComponent"}],"exports":[{"__symbolic":"reference","name":"OverlayScrollbarsComponent"}]}]}],"members":{}}},"origins":{"OverlayScrollbarsComponent":"../../src/overlayscrollbars.component","OverlayscrollbarsModule":"../../src/overlayscrollbars.module"},"importAs":"overlayscrollbars-ngx"}
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
"setup": "npm i && cd example && npm i && cd ..",
|
"setup": "npm i && cd example && npm i && cd ..",
|
||||||
"build": "node build.js",
|
"build": "node build.js",
|
||||||
"example": "cd example && npx ng serve",
|
"example": "cd example && npx ng serve",
|
||||||
"build-example": "cd example && npx ng build --prod --base-href \"/OverlayScrollbars/frameworks/angular/\" --aot=false --build-optimizer=false",
|
"build-example": "cd example && npx ng build --prod --base-href \"/OverlayScrollbars/frameworks/angular/\"",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,11 @@
|
|||||||
"angularCompilerOptions": {
|
"angularCompilerOptions": {
|
||||||
"annotateForClosureCompiler": true,
|
"annotateForClosureCompiler": true,
|
||||||
"skipTemplateCodegen": true,
|
"skipTemplateCodegen": true,
|
||||||
|
"skipMetadataEmit": false,
|
||||||
"strictMetadataEmit": true,
|
"strictMetadataEmit": true,
|
||||||
"fullTemplateTypeCheck": true,
|
"fullTemplateTypeCheck": true,
|
||||||
"strictInjectionParameters": true
|
"flatModuleOutFile": "overlayscrollbars-ngx.js",
|
||||||
|
"flatModuleId": "overlayscrollbars-ngx"
|
||||||
},
|
},
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"allowJs": false,
|
"allowJs": false,
|
||||||
@@ -30,12 +32,12 @@
|
|||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"removeComments": true
|
"removeComments": true
|
||||||
},
|
},
|
||||||
"include": [
|
|
||||||
"./src"
|
|
||||||
],
|
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"./dist",
|
"./dist",
|
||||||
"./example",
|
"./example",
|
||||||
"node_modules"
|
"node_modules"
|
||||||
|
],
|
||||||
|
"include": [
|
||||||
|
"./src"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user