-
-
Notifications
You must be signed in to change notification settings - Fork 241
test(e2e): add webpack support #1208
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
b22b5dc
refactor: add webpack to renderer demo
sis0k0 c6eda0b
refactor: add webpack to router demo
sis0k0 3808fc5
Merge branch 'master' into e2e-webpack
sis0k0 0e3ca99
Merge branch 'master' into e2e-webpack
sis0k0 be36f8b
test(e2e): update ios appium capabilities
sis0k0 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
require("application"); | ||
if (!global["__snapshot"]) { | ||
// In case snapshot generation is enabled these modules will get into the bundle | ||
// but will not be required/evaluated. | ||
// The snapshot webpack plugin will add them to the tns-java-classes.js bundle file. | ||
// This way, they will be evaluated on app start as early as possible. | ||
require("ui/frame"); | ||
require("ui/frame/activity"); | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
void 0; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
// Snapshot the ~/app.css and the theme | ||
const application = require("application"); | ||
require("ui/styling/style-scope"); | ||
const appCssContext = require.context("~/", false, /^\.\/app\.(css|scss|less|sass)$/); | ||
global.registerWebpackModules(appCssContext); | ||
application.loadAppCss(); | ||
|
||
require("./vendor-platform"); | ||
|
||
require("reflect-metadata"); | ||
require("@angular/platform-browser"); | ||
require("@angular/core"); | ||
require("@angular/common"); | ||
require("@angular/forms"); | ||
require("@angular/http"); | ||
require("@angular/router"); | ||
|
||
require("nativescript-angular/platform-static"); | ||
require("nativescript-angular/forms"); | ||
require("nativescript-angular/router"); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,7 +22,6 @@ | |
"exclude": [ | ||
"node_modules", | ||
"platforms", | ||
"**/*.aot.ts", | ||
"e2e" | ||
] | ||
} | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,163 @@ | ||
const { resolve, join } = require("path"); | ||
|
||
const webpack = require("webpack"); | ||
const nsWebpack = require("nativescript-dev-webpack"); | ||
const nativescriptTarget = require("nativescript-dev-webpack/nativescript-target"); | ||
const CopyWebpackPlugin = require("copy-webpack-plugin"); | ||
const ExtractTextPlugin = require("extract-text-webpack-plugin"); | ||
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer"); | ||
const { NativeScriptWorkerPlugin } = require("nativescript-worker-loader/NativeScriptWorkerPlugin"); | ||
const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); | ||
|
||
module.exports = env => { | ||
const platform = env && (env.android && "android" || env.ios && "ios"); | ||
if (!platform) { | ||
throw new Error("You need to provide a target platform!"); | ||
} | ||
const platforms = ["ios", "android"]; | ||
const { snapshot, uglify, report, aot } = env; | ||
const ngToolsWebpackOptions = { tsConfigPath: "tsconfig.json" }; | ||
|
||
const config = { | ||
context: resolve("./app"), | ||
target: nativescriptTarget, | ||
entry: { | ||
bundle: aot ? "./main.aot.ts" : "./main.ts", | ||
vendor: "./vendor", | ||
}, | ||
output: { | ||
pathinfo: true, | ||
// Default destination inside platforms/<platform>/... | ||
path: resolve(nsWebpack.getAppPath(platform)), | ||
libraryTarget: "commonjs2", | ||
filename: "[name].js", | ||
}, | ||
resolve: { | ||
extensions: [".ts", ".js", ".scss", ".css"], | ||
// Resolve {N} system modules from tns-core-modules | ||
modules: [ | ||
"node_modules/tns-core-modules", | ||
"node_modules", | ||
], | ||
alias: { | ||
'~': resolve("./app") | ||
}, | ||
// don't resolve symlinks to symlinked modules | ||
symlinks: false | ||
}, | ||
resolveLoader: { | ||
// don't resolve symlinks to symlinked loaders | ||
symlinks: false | ||
}, | ||
node: { | ||
// Disable node shims that conflict with NativeScript | ||
"http": false, | ||
"timers": false, | ||
"setImmediate": false, | ||
"fs": "empty", | ||
}, | ||
module: { | ||
rules: [ | ||
{ test: /\.html$|\.xml$/, use: "raw-loader" }, | ||
|
||
// tns-core-modules reads the app.css and its imports using css-loader | ||
{ | ||
test: /[\/|\\]app\.css$/, | ||
use: { | ||
loader: "css-loader", | ||
options: { minimize: false, url: false }, | ||
} | ||
}, | ||
{ | ||
test: /[\/|\\]app\.scss$/, | ||
use: [ | ||
{ loader: "css-loader", options: { minimize: false, url: false } }, | ||
"sass-loader" | ||
] | ||
}, | ||
|
||
// Angular components reference css files and their imports using raw-loader | ||
{ test: /\.css$/, exclude: /[\/|\\]app\.css$/, use: "raw-loader" }, | ||
{ test: /\.scss$/, exclude: /[\/|\\]app\.scss$/, use: ["raw-loader", "resolve-url-loader", "sass-loader"] }, | ||
|
||
// Compile TypeScript files with ahead-of-time compiler. | ||
{ test: /.ts$/, use: [ | ||
"nativescript-dev-webpack/moduleid-compat-loader", | ||
{ loader: "@ngtools/webpack", options: ngToolsWebpackOptions }, | ||
]}, | ||
], | ||
}, | ||
plugins: [ | ||
// Vendor libs go to the vendor.js chunk | ||
new webpack.optimize.CommonsChunkPlugin({ | ||
name: ["vendor"], | ||
}), | ||
// Define useful constants like TNS_WEBPACK | ||
new webpack.DefinePlugin({ | ||
"global.TNS_WEBPACK": "true", | ||
}), | ||
// Copy assets to out dir. Add your own globs as needed. | ||
new CopyWebpackPlugin([ | ||
{ from: "App_Resources/**" }, | ||
{ from: "fonts/**" }, | ||
{ from: "**/*.jpg" }, | ||
{ from: "**/*.png" }, | ||
{ from: "**/*.xml" }, | ||
]), | ||
// Generate a bundle starter script and activate it in package.json | ||
new nsWebpack.GenerateBundleStarterPlugin([ | ||
"./vendor", | ||
"./bundle", | ||
]), | ||
// Support for web workers since v3.2 | ||
new NativeScriptWorkerPlugin(), | ||
// AngularCompilerPlugin with augmented NativeScript filesystem to handle platform specific resource resolution. | ||
new nsWebpack.NativeScriptAngularCompilerPlugin( | ||
Object.assign({ | ||
entryModule: resolve(__dirname, "app/app.module#AppModule"), | ||
skipCodeGeneration: !aot, | ||
platformOptions: { | ||
platform, | ||
platforms, | ||
// ignore: ["App_Resources"] | ||
}, | ||
}, ngToolsWebpackOptions) | ||
), | ||
// Does IPC communication with the {N} CLI to notify events when running in watch mode. | ||
new nsWebpack.WatchStateLoggerPlugin(), | ||
], | ||
}; | ||
if (report) { | ||
// Generate report files for bundles content | ||
config.plugins.push(new BundleAnalyzerPlugin({ | ||
analyzerMode: "static", | ||
openAnalyzer: false, | ||
generateStatsFile: true, | ||
reportFilename: join(__dirname, "report", `report.html`), | ||
statsFilename: join(__dirname, "report", `stats.json`), | ||
})); | ||
} | ||
if (snapshot) { | ||
config.plugins.push(new nsWebpack.NativeScriptSnapshotPlugin({ | ||
chunk: "vendor", | ||
projectRoot: __dirname, | ||
webpackConfig: config, | ||
targetArchs: ["arm", "arm64", "ia32"], | ||
tnsJavaClassesOptions: { packages: ["tns-core-modules" ] }, | ||
useLibs: false | ||
})); | ||
} | ||
if (uglify) { | ||
config.plugins.push(new webpack.LoaderOptionsPlugin({ minimize: true })); | ||
|
||
// Work around an Android issue by setting compress = false | ||
const compress = platform !== "android"; | ||
config.plugins.push(new UglifyJsPlugin({ | ||
uglifyOptions: { | ||
mangle: { reserved: nsWebpack.uglifyMangleExcludes }, | ||
compress, | ||
} | ||
})); | ||
} | ||
return config; | ||
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
require("application"); | ||
if (!global["__snapshot"]) { | ||
// In case snapshot generation is enabled these modules will get into the bundle | ||
// but will not be required/evaluated. | ||
// The snapshot webpack plugin will add them to the tns-java-classes.js bundle file. | ||
// This way, they will be evaluated on app start as early as possible. | ||
require("ui/frame"); | ||
require("ui/frame/activity"); | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
void 0; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
// Snapshot the ~/app.css and the theme | ||
const application = require("application"); | ||
require("ui/styling/style-scope"); | ||
const appCssContext = require.context("~/", false, /^\.\/app\.(css|scss|less|sass)$/); | ||
global.registerWebpackModules(appCssContext); | ||
application.loadAppCss(); | ||
|
||
require("./vendor-platform"); | ||
|
||
require("reflect-metadata"); | ||
require("@angular/platform-browser"); | ||
require("@angular/core"); | ||
require("@angular/common"); | ||
require("@angular/forms"); | ||
require("@angular/http"); | ||
require("@angular/router"); | ||
|
||
require("nativescript-angular/platform-static"); | ||
require("nativescript-angular/forms"); | ||
require("nativescript-angular/router"); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,7 +22,6 @@ | |
"exclude": [ | ||
"node_modules", | ||
"platforms", | ||
"**/*.aot.ts", | ||
"e2e" | ||
] | ||
} | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
next?