Skip to content
This repository was archived by the owner on Dec 4, 2017. It is now read-only.

Commit 38f823e

Browse files
authored
chore: better package.json for zipper (#3344)
1 parent 6df8bea commit 38f823e

File tree

10 files changed

+221
-38
lines changed

10 files changed

+221
-38
lines changed

public/docs/_examples/cli-quickstart/ts/zipper.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
".angular-cli.json",
77
"protractor.conf.js"
88
],
9-
"removeSystemJsConfig": true
9+
"removeSystemJsConfig": true,
10+
"type": "cli"
1011
}

public/docs/_examples/package.json

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,9 @@
44
"private": true,
55
"description": "Master package.json, the superset of all dependencies for all of the _example package.json files. See _boilerplate/package.json for example npm scripts.",
66
"scripts": {
7-
"build": "tsc -p src/",
8-
"build:watch": "tsc -p src/ -w",
9-
"build:e2e": "tsc -p e2e/",
10-
"serve": "lite-server -c=bs-config.json",
11-
"prestart": "npm run build",
12-
"start": "concurrently \"npm run build:watch\" \"npm run serve\"",
7+
"http-server": "http-server",
138
"protractor": "protractor",
14-
"webdriver:update": "webdriver-manager update --standalone false --gecko false",
15-
"pretest": "npm run build",
16-
"test": "concurrently \"npm run build:watch\" \"karma start karma.conf.js\"",
17-
"pretest:once": "npm run build",
18-
"test:once": "karma start karma.conf.js --single-run",
19-
"lint": "tslint ./src/**/*.ts -t verbose",
20-
21-
"build:upgrade": "tsc",
22-
"serve:upgrade": "http-server",
23-
"build:cli": "ng build --no-progress",
24-
"serve:cli": "http-server dist/",
25-
"build:aot": "ngc -p tsconfig-aot.json && rollup -c rollup-config.js",
26-
"serve:aot": "lite-server -c bs-config.aot.json",
27-
"start:webpack": "webpack-dev-server --inline --progress --port 8080",
28-
"test:webpack": "karma start karma.webpack.conf.js",
29-
"build:webpack": "rimraf dist && webpack --config config/webpack.prod.js --bail",
30-
"build:babel": "babel src -d src --extensions \".es6\" --source-maps",
31-
"copy-dist-files": "node ./copy-dist-files.js",
32-
"i18n": "ng-xi18n"
9+
"webdriver:update": "webdriver-manager update --standalone false --gecko false"
3310
},
3411
"keywords": [],
3512
"author": "",

public/docs/_examples/webpack/ts/zipper.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
"webpack.config.js",
88
"karma.webpack.conf.js"
99
],
10-
"removeSystemJsConfig": true
10+
"removeSystemJsConfig": true,
11+
"type": "webpack"
1112
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"scripts": [
3+
{ "name": "lint" }
4+
],
5+
"dependencies": [
6+
"@angular/common",
7+
"@angular/compiler",
8+
"@angular/compiler-cli",
9+
"@angular/core",
10+
"@angular/forms",
11+
"@angular/http",
12+
"@angular/platform-browser",
13+
"@angular/platform-browser-dynamic",
14+
"@angular/platform-server",
15+
"@angular/router",
16+
"@angular/tsc-wrapped",
17+
"@angular/upgrade",
18+
"angular-in-memory-web-api",
19+
"core-js",
20+
"rxjs",
21+
"zone.js"
22+
],
23+
"devDependencies": [
24+
"@types/jasmine",
25+
"@types/node",
26+
"jasmine",
27+
"jasmine-core",
28+
"karma",
29+
"karma-chrome-launcher",
30+
"karma-cli",
31+
"karma-jasmine",
32+
"karma-jasmine-html-reporter",
33+
"karma-phantomjs-launcher",
34+
"lodash",
35+
"phantomjs-prebuilt",
36+
"protractor",
37+
"tslint",
38+
"typescript"
39+
]
40+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"scripts": [
3+
{ "name": "ng", "command": "ng" },
4+
{ "name": "start", "command": "ng serve" },
5+
{ "name": "test", "command": "ng test" },
6+
{ "name": "lint", "command": "ng lint" },
7+
{ "name": "e2e", "command": "ng e2e" }
8+
],
9+
"dependencies": [],
10+
"devDependencies": [
11+
"@angular/cli",
12+
"ts-node"
13+
]
14+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "angular-io-example",
3+
"version": "1.0.0",
4+
"private": true,
5+
"description": "Example project from an angular.io guide.",
6+
"scripts": {
7+
8+
},
9+
"keywords": [],
10+
"author": "",
11+
"license": "MIT",
12+
"dependencies": {
13+
14+
},
15+
"devDependencies": {
16+
17+
},
18+
"repository": {}
19+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
'use strict';
2+
3+
const fs = require('fs');
4+
5+
class PackageJsonCustomizer {
6+
constructor() {
7+
this.dependenciesPackageJson = JSON.parse(fs.readFileSync('public/docs/_examples/package.json'));
8+
this.scriptsPackageJson = JSON.parse(fs.readFileSync('public/docs/_examples/_boilerplate/package.json'));
9+
this.basePackageJson = JSON.parse(fs.readFileSync(`${__dirname}/base.json`));
10+
}
11+
12+
generate(type = 'systemjs') {
13+
let packageJson = JSON.parse(fs.readFileSync(`${__dirname}//package.json`));
14+
let rules = JSON.parse(fs.readFileSync(`${__dirname}/${type}.json`));
15+
16+
this._mergeJSON(rules, this.basePackageJson);
17+
18+
rules.scripts.forEach((r) => {
19+
const scriptName = r.name;
20+
const script = this.scriptsPackageJson.scripts[scriptName];
21+
const finalName = r.rename ? r.rename : r.name;
22+
const finalScript = r.command ? r.command : script;
23+
packageJson.scripts[finalName] = finalScript;
24+
});
25+
26+
rules.dependencies.forEach((name) => {
27+
const version = this.dependenciesPackageJson.dependencies[name];
28+
packageJson.dependencies[name] = version;
29+
});
30+
31+
rules.devDependencies.forEach((name) => {
32+
const version = this.dependenciesPackageJson.devDependencies[name];
33+
packageJson.devDependencies[name] = version;
34+
});
35+
36+
return JSON.stringify(packageJson, null, 2);
37+
}
38+
39+
_mergeJSON(json1,json2) {
40+
var result = json1 ;
41+
for (var prop in json2)
42+
{
43+
if (json2.hasOwnProperty(prop))
44+
{
45+
result[prop] = (result[prop].concat(json2[prop])).sort();
46+
}
47+
}
48+
return result;
49+
}
50+
}
51+
52+
module.exports = PackageJsonCustomizer;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"scripts": [
3+
{ "name": "build" },
4+
{ "name": "build:watch" },
5+
{ "name": "serve" },
6+
{ "name": "prestart" },
7+
{ "name": "start" },
8+
{ "name": "pretest" },
9+
{ "name": "test" },
10+
{ "name": "pretest:once" },
11+
{ "name": "test:once" },
12+
{ "name": "build:upgrade" },
13+
{ "name": "serve:upgrade" },
14+
{ "name": "build:aot" },
15+
{ "name": "serve:aot" },
16+
{ "name": "build:babel" },
17+
{ "name": "copy-dist-files" },
18+
{ "name": "i18n" }
19+
],
20+
"dependencies": [
21+
"systemjs"
22+
],
23+
"devDependencies": [
24+
"@types/angular",
25+
"@types/angular-animate",
26+
"@types/angular-cookies",
27+
"@types/angular-mocks",
28+
"@types/angular-resource",
29+
"@types/angular-route",
30+
"@types/angular-sanitize",
31+
"babel-cli",
32+
"babel-preset-angular2",
33+
"babel-preset-es2015",
34+
"canonical-path",
35+
"http-server",
36+
"concurrently",
37+
"lite-server",
38+
"rollup",
39+
"rollup-plugin-commonjs",
40+
"rollup-plugin-node-resolve",
41+
"rollup-plugin-uglify",
42+
"source-map-explorer"
43+
]
44+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"scripts": [
3+
{ "name": "start:webpack", "rename": "start" },
4+
{ "name": "test:webpack", "rename": "test" },
5+
{ "name": "build:webpack", "rename": "build" }
6+
],
7+
"dependencies": [],
8+
"devDependencies": [
9+
"angular2-template-loader",
10+
"awesome-typescript-loader",
11+
"css-loader",
12+
"extract-text-webpack-plugin",
13+
"file-loader",
14+
"html-loader",
15+
"html-webpack-plugin",
16+
"karma-sourcemap-loader",
17+
"karma-webpack",
18+
"null-loader",
19+
"raw-loader",
20+
"rimraf",
21+
"style-loader",
22+
"webpack",
23+
"webpack-dev-server",
24+
"webpack-merge"
25+
]
26+
}

tools/example-zipper/exampleZipper.js

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
'use strict';
22

33
// Canonical path provides a consistent path (i.e. always forward slashes) across different OSes
4-
var path = require('canonical-path');
5-
var jsonfile = require('jsonfile');
6-
var assert = require('assert-plus');
4+
const path = require('canonical-path');
5+
const jsonfile = require('jsonfile');
6+
const assert = require('assert-plus');
77
// adm-zip does not work properly on Windows
8-
// var Zip = require('adm-zip');
9-
var archiver = require('archiver');
8+
// const Zip = require('adm-zip');
9+
const archiver = require('archiver');
1010

11-
var fs = require('fs');
12-
var mkdirp = require('mkdirp');
13-
var globby = require('globby');
11+
const fs = require('fs');
12+
const mkdirp = require('mkdirp');
13+
const globby = require('globby');
1414

15-
var regionExtractor = require('../doc-shredder/regionExtractor');
15+
const PackageJsonCustomizer = require('./customizer/package-json/packageJsonCustomizer');
16+
const regionExtractor = require('../doc-shredder/regionExtractor');
1617

1718
class ExampleZipper {
1819
constructor(sourceDirName, outputDirName) {
20+
this.examplesSystemjsConfig = 'public/docs/_examples/_boilerplate/src/systemjs.config.js';
21+
this.exampleTsconfig = 'public/docs/_examples/_boilerplate/src/tsconfig.json';
22+
this.customizer = new PackageJsonCustomizer();
23+
1924
let gpathPlnkr = path.join(sourceDirName, '**/*plnkr.json');
2025
let gpathZipper = path.join(sourceDirName, '**/zipper.json');
2126
let configFileNames = globby.sync([gpathPlnkr, gpathZipper], { ignore: ['**/node_modules/**'] });
@@ -55,14 +60,18 @@ class ExampleZipper {
5560

5661
_zipExample(configFileName, sourceDirName, outputDirName) {
5762
let json = JSON.parse(fs.readFileSync(configFileName, 'utf-8'));
63+
const exampleType = json.type || 'systemjs';
5864
const basePath = json.basePath || '';
5965
const jsonFileName = configFileName.replace(/^.*[\\\/]/, '');
6066
const relativeDirName = path.dirname(path.dirname(path.relative(sourceDirName, configFileName)));
6167
const exampleDirName = path.dirname(configFileName);
68+
<<<<<<< 6df8bea575824951ad80a82cb2e1310d4535f085
6269
const examplesPackageJson = 'public/docs/_examples/package.json';
6370
const examplesSystemjsConfig = 'public/docs/_examples/_boilerplate/src/systemjs.config.js';
6471
const examplesSystemjsLoaderConfig = 'public/docs/_examples/_boilerplate/src/systemjs-angular-loader.js';
6572
const exampleTsconfig = 'public/docs/_examples/_boilerplate/src/tsconfig.json';
73+
=======
74+
>>>>>>> chore: better package.json for zipper
6675
let exampleZipName = jsonFileName.replace(/(plnkr|zipper).json/, relativeDirName);
6776
const outputFileName = path.join(outputDirName, relativeDirName, exampleZipName + '.zip');
6877
let defaultIncludes = ['**/*.ts', '**/*.js', '**/*.css', '**/*.html', '**/*.md', '**/*.json', '**/*.png'];
@@ -133,14 +142,14 @@ class ExampleZipper {
133142
});
134143

135144
// we need the package.json from _examples root, not the _boilerplate one
136-
zip.append(fs.readFileSync(examplesPackageJson, 'utf8'), { name: 'package.json' });
145+
zip.append(this.customizer.generate(exampleType), { name: 'package.json' });
137146
// also a systemjs config
138147
if (!json.removeSystemJsConfig) {
139148
zip.append(fs.readFileSync(examplesSystemjsConfig, 'utf8'), { name: 'src/systemjs.config.js' });
140149
zip.append(fs.readFileSync(examplesSystemjsLoaderConfig, 'utf8'), { name: 'src/systemjs-angular-loader.js' });
141150
}
142151
// a modified tsconfig
143-
let tsconfig = fs.readFileSync(exampleTsconfig, 'utf8');
152+
let tsconfig = fs.readFileSync(this.exampleTsconfig, 'utf8');
144153
zip.append(this._changeTypeRoots(tsconfig), {name: 'src/tsconfig.json'});
145154

146155
zip.finalize();

0 commit comments

Comments
 (0)