chore: better package.json for zipper (#3344)
This commit is contained in:
parent
6df8bea575
commit
38f823e357
@ -6,5 +6,6 @@
|
|||||||
".angular-cli.json",
|
".angular-cli.json",
|
||||||
"protractor.conf.js"
|
"protractor.conf.js"
|
||||||
],
|
],
|
||||||
"removeSystemJsConfig": true
|
"removeSystemJsConfig": true,
|
||||||
|
"type": "cli"
|
||||||
}
|
}
|
||||||
|
@ -4,32 +4,9 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"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.",
|
"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.",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc -p src/",
|
"http-server": "http-server",
|
||||||
"build:watch": "tsc -p src/ -w",
|
|
||||||
"build:e2e": "tsc -p e2e/",
|
|
||||||
"serve": "lite-server -c=bs-config.json",
|
|
||||||
"prestart": "npm run build",
|
|
||||||
"start": "concurrently \"npm run build:watch\" \"npm run serve\"",
|
|
||||||
"protractor": "protractor",
|
"protractor": "protractor",
|
||||||
"webdriver:update": "webdriver-manager update --standalone false --gecko false",
|
"webdriver:update": "webdriver-manager update --standalone false --gecko false"
|
||||||
"pretest": "npm run build",
|
|
||||||
"test": "concurrently \"npm run build:watch\" \"karma start karma.conf.js\"",
|
|
||||||
"pretest:once": "npm run build",
|
|
||||||
"test:once": "karma start karma.conf.js --single-run",
|
|
||||||
"lint": "tslint ./src/**/*.ts -t verbose",
|
|
||||||
|
|
||||||
"build:upgrade": "tsc",
|
|
||||||
"serve:upgrade": "http-server",
|
|
||||||
"build:cli": "ng build --no-progress",
|
|
||||||
"serve:cli": "http-server dist/",
|
|
||||||
"build:aot": "ngc -p tsconfig-aot.json && rollup -c rollup-config.js",
|
|
||||||
"serve:aot": "lite-server -c bs-config.aot.json",
|
|
||||||
"start:webpack": "webpack-dev-server --inline --progress --port 8080",
|
|
||||||
"test:webpack": "karma start karma.webpack.conf.js",
|
|
||||||
"build:webpack": "rimraf dist && webpack --config config/webpack.prod.js --bail",
|
|
||||||
"build:babel": "babel src -d src --extensions \".es6\" --source-maps",
|
|
||||||
"copy-dist-files": "node ./copy-dist-files.js",
|
|
||||||
"i18n": "ng-xi18n"
|
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
|
@ -7,5 +7,6 @@
|
|||||||
"webpack.config.js",
|
"webpack.config.js",
|
||||||
"karma.webpack.conf.js"
|
"karma.webpack.conf.js"
|
||||||
],
|
],
|
||||||
"removeSystemJsConfig": true
|
"removeSystemJsConfig": true,
|
||||||
|
"type": "webpack"
|
||||||
}
|
}
|
||||||
|
40
tools/example-zipper/customizer/package-json/base.json
Normal file
40
tools/example-zipper/customizer/package-json/base.json
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"scripts": [
|
||||||
|
{ "name": "lint" }
|
||||||
|
],
|
||||||
|
"dependencies": [
|
||||||
|
"@angular/common",
|
||||||
|
"@angular/compiler",
|
||||||
|
"@angular/compiler-cli",
|
||||||
|
"@angular/core",
|
||||||
|
"@angular/forms",
|
||||||
|
"@angular/http",
|
||||||
|
"@angular/platform-browser",
|
||||||
|
"@angular/platform-browser-dynamic",
|
||||||
|
"@angular/platform-server",
|
||||||
|
"@angular/router",
|
||||||
|
"@angular/tsc-wrapped",
|
||||||
|
"@angular/upgrade",
|
||||||
|
"angular-in-memory-web-api",
|
||||||
|
"core-js",
|
||||||
|
"rxjs",
|
||||||
|
"zone.js"
|
||||||
|
],
|
||||||
|
"devDependencies": [
|
||||||
|
"@types/jasmine",
|
||||||
|
"@types/node",
|
||||||
|
"jasmine",
|
||||||
|
"jasmine-core",
|
||||||
|
"karma",
|
||||||
|
"karma-chrome-launcher",
|
||||||
|
"karma-cli",
|
||||||
|
"karma-jasmine",
|
||||||
|
"karma-jasmine-html-reporter",
|
||||||
|
"karma-phantomjs-launcher",
|
||||||
|
"lodash",
|
||||||
|
"phantomjs-prebuilt",
|
||||||
|
"protractor",
|
||||||
|
"tslint",
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
|
}
|
14
tools/example-zipper/customizer/package-json/cli.json
Normal file
14
tools/example-zipper/customizer/package-json/cli.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"scripts": [
|
||||||
|
{ "name": "ng", "command": "ng" },
|
||||||
|
{ "name": "start", "command": "ng serve" },
|
||||||
|
{ "name": "test", "command": "ng test" },
|
||||||
|
{ "name": "lint", "command": "ng lint" },
|
||||||
|
{ "name": "e2e", "command": "ng e2e" }
|
||||||
|
],
|
||||||
|
"dependencies": [],
|
||||||
|
"devDependencies": [
|
||||||
|
"@angular/cli",
|
||||||
|
"ts-node"
|
||||||
|
]
|
||||||
|
}
|
19
tools/example-zipper/customizer/package-json/package.json
Normal file
19
tools/example-zipper/customizer/package-json/package.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "angular-io-example",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"private": true,
|
||||||
|
"description": "Example project from an angular.io guide.",
|
||||||
|
"scripts": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"repository": {}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
class PackageJsonCustomizer {
|
||||||
|
constructor() {
|
||||||
|
this.dependenciesPackageJson = JSON.parse(fs.readFileSync('public/docs/_examples/package.json'));
|
||||||
|
this.scriptsPackageJson = JSON.parse(fs.readFileSync('public/docs/_examples/_boilerplate/package.json'));
|
||||||
|
this.basePackageJson = JSON.parse(fs.readFileSync(`${__dirname}/base.json`));
|
||||||
|
}
|
||||||
|
|
||||||
|
generate(type = 'systemjs') {
|
||||||
|
let packageJson = JSON.parse(fs.readFileSync(`${__dirname}//package.json`));
|
||||||
|
let rules = JSON.parse(fs.readFileSync(`${__dirname}/${type}.json`));
|
||||||
|
|
||||||
|
this._mergeJSON(rules, this.basePackageJson);
|
||||||
|
|
||||||
|
rules.scripts.forEach((r) => {
|
||||||
|
const scriptName = r.name;
|
||||||
|
const script = this.scriptsPackageJson.scripts[scriptName];
|
||||||
|
const finalName = r.rename ? r.rename : r.name;
|
||||||
|
const finalScript = r.command ? r.command : script;
|
||||||
|
packageJson.scripts[finalName] = finalScript;
|
||||||
|
});
|
||||||
|
|
||||||
|
rules.dependencies.forEach((name) => {
|
||||||
|
const version = this.dependenciesPackageJson.dependencies[name];
|
||||||
|
packageJson.dependencies[name] = version;
|
||||||
|
});
|
||||||
|
|
||||||
|
rules.devDependencies.forEach((name) => {
|
||||||
|
const version = this.dependenciesPackageJson.devDependencies[name];
|
||||||
|
packageJson.devDependencies[name] = version;
|
||||||
|
});
|
||||||
|
|
||||||
|
return JSON.stringify(packageJson, null, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
_mergeJSON(json1,json2) {
|
||||||
|
var result = json1 ;
|
||||||
|
for (var prop in json2)
|
||||||
|
{
|
||||||
|
if (json2.hasOwnProperty(prop))
|
||||||
|
{
|
||||||
|
result[prop] = (result[prop].concat(json2[prop])).sort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = PackageJsonCustomizer;
|
44
tools/example-zipper/customizer/package-json/systemjs.json
Normal file
44
tools/example-zipper/customizer/package-json/systemjs.json
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"scripts": [
|
||||||
|
{ "name": "build" },
|
||||||
|
{ "name": "build:watch" },
|
||||||
|
{ "name": "serve" },
|
||||||
|
{ "name": "prestart" },
|
||||||
|
{ "name": "start" },
|
||||||
|
{ "name": "pretest" },
|
||||||
|
{ "name": "test" },
|
||||||
|
{ "name": "pretest:once" },
|
||||||
|
{ "name": "test:once" },
|
||||||
|
{ "name": "build:upgrade" },
|
||||||
|
{ "name": "serve:upgrade" },
|
||||||
|
{ "name": "build:aot" },
|
||||||
|
{ "name": "serve:aot" },
|
||||||
|
{ "name": "build:babel" },
|
||||||
|
{ "name": "copy-dist-files" },
|
||||||
|
{ "name": "i18n" }
|
||||||
|
],
|
||||||
|
"dependencies": [
|
||||||
|
"systemjs"
|
||||||
|
],
|
||||||
|
"devDependencies": [
|
||||||
|
"@types/angular",
|
||||||
|
"@types/angular-animate",
|
||||||
|
"@types/angular-cookies",
|
||||||
|
"@types/angular-mocks",
|
||||||
|
"@types/angular-resource",
|
||||||
|
"@types/angular-route",
|
||||||
|
"@types/angular-sanitize",
|
||||||
|
"babel-cli",
|
||||||
|
"babel-preset-angular2",
|
||||||
|
"babel-preset-es2015",
|
||||||
|
"canonical-path",
|
||||||
|
"http-server",
|
||||||
|
"concurrently",
|
||||||
|
"lite-server",
|
||||||
|
"rollup",
|
||||||
|
"rollup-plugin-commonjs",
|
||||||
|
"rollup-plugin-node-resolve",
|
||||||
|
"rollup-plugin-uglify",
|
||||||
|
"source-map-explorer"
|
||||||
|
]
|
||||||
|
}
|
26
tools/example-zipper/customizer/package-json/webpack.json
Normal file
26
tools/example-zipper/customizer/package-json/webpack.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"scripts": [
|
||||||
|
{ "name": "start:webpack", "rename": "start" },
|
||||||
|
{ "name": "test:webpack", "rename": "test" },
|
||||||
|
{ "name": "build:webpack", "rename": "build" }
|
||||||
|
],
|
||||||
|
"dependencies": [],
|
||||||
|
"devDependencies": [
|
||||||
|
"angular2-template-loader",
|
||||||
|
"awesome-typescript-loader",
|
||||||
|
"css-loader",
|
||||||
|
"extract-text-webpack-plugin",
|
||||||
|
"file-loader",
|
||||||
|
"html-loader",
|
||||||
|
"html-webpack-plugin",
|
||||||
|
"karma-sourcemap-loader",
|
||||||
|
"karma-webpack",
|
||||||
|
"null-loader",
|
||||||
|
"raw-loader",
|
||||||
|
"rimraf",
|
||||||
|
"style-loader",
|
||||||
|
"webpack",
|
||||||
|
"webpack-dev-server",
|
||||||
|
"webpack-merge"
|
||||||
|
]
|
||||||
|
}
|
@ -1,21 +1,26 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
// Canonical path provides a consistent path (i.e. always forward slashes) across different OSes
|
// Canonical path provides a consistent path (i.e. always forward slashes) across different OSes
|
||||||
var path = require('canonical-path');
|
const path = require('canonical-path');
|
||||||
var jsonfile = require('jsonfile');
|
const jsonfile = require('jsonfile');
|
||||||
var assert = require('assert-plus');
|
const assert = require('assert-plus');
|
||||||
// adm-zip does not work properly on Windows
|
// adm-zip does not work properly on Windows
|
||||||
// var Zip = require('adm-zip');
|
// const Zip = require('adm-zip');
|
||||||
var archiver = require('archiver');
|
const archiver = require('archiver');
|
||||||
|
|
||||||
var fs = require('fs');
|
const fs = require('fs');
|
||||||
var mkdirp = require('mkdirp');
|
const mkdirp = require('mkdirp');
|
||||||
var globby = require('globby');
|
const globby = require('globby');
|
||||||
|
|
||||||
var regionExtractor = require('../doc-shredder/regionExtractor');
|
const PackageJsonCustomizer = require('./customizer/package-json/packageJsonCustomizer');
|
||||||
|
const regionExtractor = require('../doc-shredder/regionExtractor');
|
||||||
|
|
||||||
class ExampleZipper {
|
class ExampleZipper {
|
||||||
constructor(sourceDirName, outputDirName) {
|
constructor(sourceDirName, outputDirName) {
|
||||||
|
this.examplesSystemjsConfig = 'public/docs/_examples/_boilerplate/src/systemjs.config.js';
|
||||||
|
this.exampleTsconfig = 'public/docs/_examples/_boilerplate/src/tsconfig.json';
|
||||||
|
this.customizer = new PackageJsonCustomizer();
|
||||||
|
|
||||||
let gpathPlnkr = path.join(sourceDirName, '**/*plnkr.json');
|
let gpathPlnkr = path.join(sourceDirName, '**/*plnkr.json');
|
||||||
let gpathZipper = path.join(sourceDirName, '**/zipper.json');
|
let gpathZipper = path.join(sourceDirName, '**/zipper.json');
|
||||||
let configFileNames = globby.sync([gpathPlnkr, gpathZipper], { ignore: ['**/node_modules/**'] });
|
let configFileNames = globby.sync([gpathPlnkr, gpathZipper], { ignore: ['**/node_modules/**'] });
|
||||||
@ -55,14 +60,18 @@ class ExampleZipper {
|
|||||||
|
|
||||||
_zipExample(configFileName, sourceDirName, outputDirName) {
|
_zipExample(configFileName, sourceDirName, outputDirName) {
|
||||||
let json = JSON.parse(fs.readFileSync(configFileName, 'utf-8'));
|
let json = JSON.parse(fs.readFileSync(configFileName, 'utf-8'));
|
||||||
|
const exampleType = json.type || 'systemjs';
|
||||||
const basePath = json.basePath || '';
|
const basePath = json.basePath || '';
|
||||||
const jsonFileName = configFileName.replace(/^.*[\\\/]/, '');
|
const jsonFileName = configFileName.replace(/^.*[\\\/]/, '');
|
||||||
const relativeDirName = path.dirname(path.dirname(path.relative(sourceDirName, configFileName)));
|
const relativeDirName = path.dirname(path.dirname(path.relative(sourceDirName, configFileName)));
|
||||||
const exampleDirName = path.dirname(configFileName);
|
const exampleDirName = path.dirname(configFileName);
|
||||||
|
<<<<<<< 6df8bea575824951ad80a82cb2e1310d4535f085
|
||||||
const examplesPackageJson = 'public/docs/_examples/package.json';
|
const examplesPackageJson = 'public/docs/_examples/package.json';
|
||||||
const examplesSystemjsConfig = 'public/docs/_examples/_boilerplate/src/systemjs.config.js';
|
const examplesSystemjsConfig = 'public/docs/_examples/_boilerplate/src/systemjs.config.js';
|
||||||
const examplesSystemjsLoaderConfig = 'public/docs/_examples/_boilerplate/src/systemjs-angular-loader.js';
|
const examplesSystemjsLoaderConfig = 'public/docs/_examples/_boilerplate/src/systemjs-angular-loader.js';
|
||||||
const exampleTsconfig = 'public/docs/_examples/_boilerplate/src/tsconfig.json';
|
const exampleTsconfig = 'public/docs/_examples/_boilerplate/src/tsconfig.json';
|
||||||
|
=======
|
||||||
|
>>>>>>> chore: better package.json for zipper
|
||||||
let exampleZipName = jsonFileName.replace(/(plnkr|zipper).json/, relativeDirName);
|
let exampleZipName = jsonFileName.replace(/(plnkr|zipper).json/, relativeDirName);
|
||||||
const outputFileName = path.join(outputDirName, relativeDirName, exampleZipName + '.zip');
|
const outputFileName = path.join(outputDirName, relativeDirName, exampleZipName + '.zip');
|
||||||
let defaultIncludes = ['**/*.ts', '**/*.js', '**/*.css', '**/*.html', '**/*.md', '**/*.json', '**/*.png'];
|
let defaultIncludes = ['**/*.ts', '**/*.js', '**/*.css', '**/*.html', '**/*.md', '**/*.json', '**/*.png'];
|
||||||
@ -133,14 +142,14 @@ class ExampleZipper {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// we need the package.json from _examples root, not the _boilerplate one
|
// we need the package.json from _examples root, not the _boilerplate one
|
||||||
zip.append(fs.readFileSync(examplesPackageJson, 'utf8'), { name: 'package.json' });
|
zip.append(this.customizer.generate(exampleType), { name: 'package.json' });
|
||||||
// also a systemjs config
|
// also a systemjs config
|
||||||
if (!json.removeSystemJsConfig) {
|
if (!json.removeSystemJsConfig) {
|
||||||
zip.append(fs.readFileSync(examplesSystemjsConfig, 'utf8'), { name: 'src/systemjs.config.js' });
|
zip.append(fs.readFileSync(examplesSystemjsConfig, 'utf8'), { name: 'src/systemjs.config.js' });
|
||||||
zip.append(fs.readFileSync(examplesSystemjsLoaderConfig, 'utf8'), { name: 'src/systemjs-angular-loader.js' });
|
zip.append(fs.readFileSync(examplesSystemjsLoaderConfig, 'utf8'), { name: 'src/systemjs-angular-loader.js' });
|
||||||
}
|
}
|
||||||
// a modified tsconfig
|
// a modified tsconfig
|
||||||
let tsconfig = fs.readFileSync(exampleTsconfig, 'utf8');
|
let tsconfig = fs.readFileSync(this.exampleTsconfig, 'utf8');
|
||||||
zip.append(this._changeTypeRoots(tsconfig), {name: 'src/tsconfig.json'});
|
zip.append(this._changeTypeRoots(tsconfig), {name: 'src/tsconfig.json'});
|
||||||
|
|
||||||
zip.finalize();
|
zip.finalize();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user