|
1 | 1 | 'use strict'; |
2 | 2 |
|
3 | | -const fs = require('fs-extra'); |
4 | | -const ngc = require('@angular/compiler-cli/src/main').main; |
5 | | -const librarianUtils = require('angular-librarian/commands/utilities'); |
6 | | -const path = require('path'); |
7 | | - |
8 | | -const copyGlobs = require('./copy-globs'); |
9 | | -const copyToBuild = require('./copy-build'); |
10 | | -const inlineResources = require('./inline-resources'); |
11 | | -const rollup = require('./rollup'); |
12 | | - |
13 | | -const colorize = librarianUtils.colorize; |
14 | | -const execute = librarianUtils.execute; |
15 | | -const rootDir = path.resolve(__dirname, '..'); |
16 | | -const buildDir = path.resolve(rootDir, 'build'); |
17 | | -const distDir = path.resolve(rootDir, 'dist'); |
18 | | -const libName = require(path.resolve(rootDir, 'package.json')).name; |
19 | | -const srcDir = path.resolve(rootDir, 'src'); |
20 | | -const tscDir = path.resolve(rootDir, 'out-tsc'); |
21 | | -const es5Dir = path.resolve(tscDir, 'lib-es5'); |
22 | | -const es2015Dir = path.resolve(tscDir, 'lib-es2015'); |
23 | | - |
24 | | -const runPromise = (message, fn) => { |
25 | | - return function() { |
26 | | - console.info(colorize.colorize(message, 'cyan')); |
27 | | - return fn().then(complete); |
28 | | - }; |
29 | | -}; |
30 | | - |
31 | | -const complete = (depth = 0) => { |
32 | | - const spaces = ' '.repeat(depth); |
33 | | - console.info(colorize.colorize(`${ spaces }> Complete`, 'green')); |
34 | | -}; |
35 | | -const evaluateExitCode = (exitCode) => { |
36 | | - return exitCode === 0 ? Promise.resolve() : Promise.reject(); |
37 | | -}; |
38 | | -const getAngularCompilerVersion = () => { |
39 | | - const npm = /^win/.test(process.platform) ? 'npm.cmd' : 'npm'; |
40 | | - const lines = execute.execute(npm, ['list', '--depth=0', '@angular/compiler']).split(/\r?\n/); |
41 | | - const compilerLine = lines.find((line) => line.indexOf('@angular/compiler@') !== -1); |
42 | | - let version; |
43 | | - |
44 | | - if (compilerLine) { |
45 | | - version = compilerLine.match(/\bangular\/compiler@[^\s]+\s?/) || ['']; |
46 | | - version = version[0].trim().replace('angular/compiler@', ''); |
47 | | - } |
48 | | - |
49 | | - if (!version || version === '(empty)') { |
50 | | - Promise.reject('Angular Compiler is not installed!'); |
51 | | - } |
52 | | - |
53 | | - return version; |
54 | | -}; |
55 | | -const compileCode = () => Promise.all([2015, 5].map((type) => { |
56 | | - const compilerVersion = getAngularCompilerVersion(); |
57 | | - const majorCompilerVersion = +compilerVersion.split('.')[0]; |
58 | | - |
59 | | - if (majorCompilerVersion >= 5) { |
60 | | - const exitCode = ngc(['--project', path.resolve(rootDir, `tsconfig.es${ type }.json`)]); |
61 | | - return evaluateExitCode(exitCode); |
62 | | - } else { |
63 | | - ngc({ project: path.resolve(rootDir, `tsconfig.es${ type }.json`)}) |
64 | | - .then((exitCode) => |
65 | | - evaluateExitCode(exitCode) |
66 | | - ) |
67 | | - } |
68 | | -})); |
69 | | -const copyMetadata = () => |
70 | | - copyGlobs(['**/*.d.ts', '**/*.metadata.json'], es2015Dir, distDir); |
71 | | -const copyPackageFiles = () => |
72 | | - copyGlobs(['.npmignore', 'package.json', 'README.md'], rootDir, distDir) |
73 | | - .then(() => { |
74 | | - const contents = fs.readFileSync(path.resolve(distDir, 'package.json'), 'utf8'); |
75 | | - |
76 | | - return fs.writeFileSync(path.resolve(distDir, 'package.json'), contents.replace('"dependencies":', '"peerDependencies":')); |
77 | | - }); |
78 | | -const copySource = () => copyGlobs('**/*', srcDir, buildDir); |
79 | | -const doInlining = () => inlineResources(buildDir, 'src'); |
80 | | -const rollupBundles = () => rollup(libName, { |
81 | | - dist: distDir, |
82 | | - es2015: es2015Dir, |
83 | | - es5: es5Dir, |
84 | | - root: rootDir |
85 | | -}); |
| 3 | +const copySync = require('fs-extra').copySync; |
| 4 | +const ngPackagr = require('ng-packagr').ngPackagr; |
| 5 | +const join = require('path').join; |
86 | 6 |
|
87 | 7 | return Promise.resolve() |
88 | | - .then(runPromise('Copying `src` files into `build`', copySource)) |
89 | | - .then(runPromise('Inlining resources', doInlining)) |
90 | | - .then(runPromise('Compiling code', compileCode)) |
91 | | - .then(runPromise('Copying typings + metadata to `dist`', copyMetadata)) |
92 | | - .then(runPromise('Generating bundles via rollup', rollupBundles)) |
93 | | - .then(runPromise('Copying package files to `dist`', copyPackageFiles)) |
94 | | - .catch((error) => { |
95 | | - console.error('\x1b[31m%s\x1b[0m', '> Build failed\n'); |
96 | | - console.error(error); |
97 | | - process.exit(1); |
98 | | - }); |
| 8 | + .then(() => |
| 9 | + ngPackagr() |
| 10 | + .forProject(join(process.cwd(), 'src/package.json')) |
| 11 | + .build(), |
| 12 | + ) |
| 13 | + .then(() => { |
| 14 | + copySync('README.md', join(process.cwd(), 'dist/README.md')); |
| 15 | + }) |
| 16 | + .then(() => console.log('success')); |
0 commit comments