Replace angular-cli patch with something less risky (#742)

* Replace angular-cli patch with something less risky

* path.join() is needed, provide a naive implementation

* technically, webpack provided a polyfill for Buffer, we should too

* process polyfill matches webpack; peertube depends on nextTick

* polyfill for path to match webpack

* http/https polyfills as per webpack
pull/750/head
William Lahti 2018-06-28 06:53:04 -07:00 committed by Chocobozzz
parent 9e01e51099
commit 3ea9a1c311
8 changed files with 25 additions and 17 deletions

View File

@ -1,15 +0,0 @@
// Remove patch when https://github.com/angular/angular-cli/issues/10681#issuecomment-389160125 is closed
const fs = require('fs');
const f = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js';
fs.readFile(f, 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
var result = data.replace(/node: false/g, 'node: { global: true, crypto: "empty", fs: "empty", process: true, module: false, clearImmediate: false, setImmediate: false }');
fs.writeFile(f, result, 'utf8', function (err) {
if (err) return console.log(err);
});
});

View File

@ -17,7 +17,7 @@
"webpack": "webpack",
"tslint": "tslint",
"ng": "ng",
"postinstall": "npm rebuild node-sass && test -f angular-cli-patch.js && node angular-cli-patch.js || true",
"postinstall": "npm rebuild node-sass",
"webpack-bundle-analyzer": "webpack-bundle-analyzer",
"webdriver-manager": "webdriver-manager",
"ngx-extractor": "ngx-extractor"
@ -61,6 +61,7 @@
"angular2-notifications": "^1.0.2",
"awesome-typescript-loader": "5.0.0",
"bootstrap-sass": "^3.3.7",
"buffer": "^5.1.0",
"cache-chunk-store": "^2.0.0",
"codelyzer": "^4.0.2",
"core-js": "^2.4.1",
@ -69,6 +70,7 @@
"extract-text-webpack-plugin": "4.0.0-beta.0",
"file-loader": "^1.1.5",
"html-webpack-plugin": "^3.2.0",
"https-browserify": "^1.0.0",
"jasmine-core": "^3.1.0",
"jasmine-spec-reporter": "^4.2.1",
"karma": "^2.0.2",
@ -85,7 +87,9 @@
"ngx-pipes": "^2.1.7",
"node-sass": "^4.1.1",
"npm-font-source-sans-pro": "^1.0.2",
"path-browserify": "^1.0.0",
"primeng": "^6.0.0-rc.1",
"process": "^0.11.10",
"protractor": "^5.3.2",
"purify-css": "^1.2.5",
"purifycss-webpack": "^0.7.0",
@ -95,6 +99,7 @@
"sanitize-html": "^1.16.3",
"sass-loader": "^7.0.1",
"sass-resources-loader": "^1.2.1",
"stream-http": "^2.8.3",
"tslint": "^5.7.0",
"tslint-config-standard": "^7.0.0",
"typescript": "2.7",

View File

@ -80,3 +80,9 @@ import 'zone.js/dist/zone' // Included with Angular CLI.
/***************************************************************************************************
* APPLICATION IMPORTS
*/
// global/process polyfills
;(window as any).global = window;
;(window as any).process = require('process/');
;(window as any).Buffer = require('buffer/').Buffer;

1
client/src/shims/http.ts Normal file
View File

@ -0,0 +1 @@
module.exports = require('stream-http');

View File

@ -0,0 +1 @@
module.exports = require('https-browserify');

3
client/src/shims/noop.ts Normal file
View File

@ -0,0 +1,3 @@
// Does nothing. Used to shim out node.js modules
// which are no-ops in the browser.
export const NOOP = 0;

1
client/src/shims/path.ts Normal file
View File

@ -0,0 +1 @@
module.exports = require('path-browserify');

View File

@ -20,7 +20,13 @@
"baseUrl": "src",
"paths": {
"@app/*": [ "app/*" ],
"video.js": [ "../node_modules/video.js/dist/alt/video.core.js" ]
"video.js": [ "../node_modules/video.js/dist/alt/video.core.js" ],
"fs": [ "./shims/noop" ],
"http": [ "./shims/http" ],
"https": [ "./shims/https" ],
"path": [ "./shims/path" ],
"stream": [ "./shims/noop" ],
"crypto": [ "./shims/noop" ]
}
}
}