Skip to content
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

Commit ba68a1b

Browse files
authored
feat: make webpack deps production deps of the plugin (#571)
implements #569 BREAKING CHANGES: The dependencies that were previously added by the nativescript-dev-webpack plugin to the project's package.json are now dependencies of the plugin itself. MIGRATION: 1. Remove all obsolete dependencies from your project. You can do that by invoking the script: ``` ./node_modules/.bin/update-ns-webpack --deps ``` 2. [Angular] Add the following packages as devDependencies: ``` //package.json "devDependencies": { "@angular-devkit/build-angular": "~0.7.0-rc.0", "@angular/compiler-cli": "~6.1.0-beta.1", //... } ```
1 parent c27e0db commit ba68a1b

File tree

6 files changed

+57
-96
lines changed

6 files changed

+57
-96
lines changed

Diff for: demo/AngularApp/package.json

+2-16
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,8 @@
2929
"zone.js": "^0.8.4"
3030
},
3131
"devDependencies": {
32-
"@angular-devkit/core": "~0.7.0-beta.1",
32+
"@angular-devkit/build-angular": "~0.7.0-beta.1",
3333
"@angular/compiler-cli": "~6.0.0",
34-
"@ngtools/webpack": "~6.1.0-beta.1",
3534
"@types/chai": "^4.0.2",
3635
"@types/mocha": "^2.2.41",
3736
"@types/node": "^7.0.5",
@@ -40,10 +39,6 @@
4039
"babylon": "6.18.0",
4140
"chai": "~4.1.1",
4241
"chai-as-promised": "~7.1.1",
43-
"clean-webpack-plugin": "~0.1.19",
44-
"copy-webpack-plugin": "~4.5.1",
45-
"css-loader": "~0.28.11",
46-
"extract-text-webpack-plugin": "~3.0.2",
4742
"lazy": "1.0.11",
4843
"mocha": "~3.5.0",
4944
"mocha-junit-reporter": "^1.13.0",
@@ -52,16 +47,7 @@
5247
"nativescript-dev-sass": "^1.3.5",
5348
"nativescript-dev-typescript": "next",
5449
"nativescript-dev-webpack": "file:../..",
55-
"nativescript-worker-loader": "~0.9.0",
56-
"raw-loader": "~0.5.1",
57-
"resolve-url-loader": "~2.3.0",
58-
"sass-loader": "~7.0.1",
59-
"typescript": "~2.7.2",
60-
"uglifyjs-webpack-plugin": "~1.2.5",
61-
"webpack": "~4.6.0",
62-
"webpack-bundle-analyzer": "~2.13.0",
63-
"webpack-cli": "~2.1.3",
64-
"webpack-sources": "~1.1.0"
50+
"typescript": "~2.7.2"
6551
},
6652
"scripts": {
6753
"ns-bundle": "ns-bundle",

Diff for: demo/JavaScriptApp/package.json

+1-14
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,14 @@
2323
"babel-traverse": "6.26.0",
2424
"babel-types": "6.26.0",
2525
"babylon": "6.18.0",
26-
"clean-webpack-plugin": "~0.1.19",
27-
"copy-webpack-plugin": "~4.5.1",
28-
"css-loader": "~0.28.7",
29-
"extract-text-webpack-plugin": "~3.0.2",
3026
"lazy": "1.0.11",
3127
"mocha": "~3.5.0",
3228
"mocha-junit-reporter": "^1.13.0",
3329
"mocha-multi": "^0.11.0",
3430
"nativescript-dev-appium": "next",
3531
"nativescript-dev-sass": "^1.3.5",
3632
"nativescript-dev-webpack": "file:../..",
37-
"nativescript-worker-loader": "~0.8.1",
38-
"node-sass": "^4.7.1",
39-
"raw-loader": "~0.5.1",
40-
"resolve-url-loader": "~2.3.0",
41-
"sass-loader": "~6.0.6",
42-
"uglifyjs-webpack-plugin": "~1.2.4",
43-
"webpack": "~4.5.0",
44-
"webpack-bundle-analyzer": "^2.9.1",
45-
"webpack-cli": "~2.0.14",
46-
"webpack-sources": "~1.1.0"
33+
"node-sass": "^4.7.1"
4734
},
4835
"scripts": {
4936
"ns-bundle": "ns-bundle",

Diff for: demo/TypeScriptApp/package.json

+1-15
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,9 @@
2020
"@types/chai": "^4.0.2",
2121
"@types/mocha": "^2.2.41",
2222
"@types/node": "^7.0.5",
23-
"awesome-typescript-loader": "~5.0.0-1",
2423
"babel-traverse": "6.26.0",
2524
"babel-types": "6.26.0",
2625
"babylon": "6.18.0",
27-
"clean-webpack-plugin": "~0.1.19",
28-
"copy-webpack-plugin": "~4.5.1",
29-
"css-loader": "~0.28.7",
30-
"extract-text-webpack-plugin": "~3.0.2",
3126
"lazy": "1.0.11",
3227
"mocha": "~3.5.0",
3328
"mocha-junit-reporter": "^1.13.0",
@@ -36,16 +31,7 @@
3631
"nativescript-dev-sass": "^1.3.5",
3732
"nativescript-dev-typescript": "next",
3833
"nativescript-dev-webpack": "file:../..",
39-
"nativescript-worker-loader": "~0.8.1",
40-
"raw-loader": "~0.5.1",
41-
"resolve-url-loader": "~2.3.0",
42-
"sass-loader": "~6.0.6",
43-
"typescript": "~2.7.2",
44-
"uglifyjs-webpack-plugin": "~1.2.4",
45-
"webpack": "~4.5.0",
46-
"webpack-bundle-analyzer": "^2.9.1",
47-
"webpack-cli": "~2.0.14",
48-
"webpack-sources": "~1.1.0"
34+
"typescript": "~2.7.2"
4935
},
5036
"scripts": {
5137
"ns-bundle": "ns-bundle",

Diff for: dependencyManager.js

+36-35
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { isAngular, isTypeScript, isSass } = require("./projectHelpers");
1+
const { isAngular } = require("./projectHelpers");
22

33
const NEW_DEPS_MESSAGE = `\
44
A few new dependencies were added. \
@@ -21,10 +21,6 @@ You can also pass the "--env.uglify" flag to use UglifyJS for minification.
2121
For more information check out https://docs.nativescript.org/tooling/bundling-with-webpack#bundling.
2222
`;
2323

24-
function forceUpdateProjectDeps(packageJson) {
25-
return addProjectDeps(packageJson, true);
26-
}
27-
2824
function addProjectDeps(packageJson, force = false) {
2925
packageJson.devDependencies = packageJson.devDependencies || {};
3026
const postinstallOptions = {
@@ -41,6 +37,35 @@ function addProjectDeps(packageJson, force = false) {
4137
return postinstallOptions;
4238
}
4339

40+
function forceUpdateProjectDeps(packageJson) {
41+
removeObsoleteDeps(packageJson);
42+
43+
return addProjectDeps(packageJson, true);
44+
}
45+
46+
function removeObsoleteDeps(packageJson) {
47+
const depsToRemove = [
48+
"webpack",
49+
"webpack-cli",
50+
"webpack-bundle-analyzer",
51+
"webpack-sources",
52+
"clean-webpack-plugin",
53+
"copy-webpack-plugin",
54+
"raw-loader",
55+
"css-loader",
56+
"nativescript-worker-loader",
57+
"extract-text-webpack-plugin",
58+
"uglifyjs-webpack-plugin",
59+
"@ngtools/webpack",
60+
"@angular-devkit/core",
61+
"resolve-url-loader",
62+
"awesome-typescript-loader",
63+
"sass-loader",
64+
];
65+
66+
depsToRemove.forEach(dep => delete packageJson.devDependencies[dep]);
67+
}
68+
4469
function addDependency(deps, name, version, force) {
4570
const options = { deps };
4671

@@ -57,36 +82,12 @@ function addDependency(deps, name, version, force) {
5782
}
5883

5984
function getRequiredDeps(packageJson) {
60-
const deps = {
61-
"webpack": "~4.6.0",
62-
"webpack-cli": "~2.1.3",
63-
"webpack-bundle-analyzer": "~2.13.0",
64-
"webpack-sources": "~1.1.0",
65-
"clean-webpack-plugin": "~0.1.19",
66-
"copy-webpack-plugin": "~4.5.1",
67-
"raw-loader": "~0.5.1",
68-
"css-loader": "~0.28.11",
69-
"nativescript-worker-loader": "~0.9.0",
70-
"extract-text-webpack-plugin": "~3.0.2",
71-
"uglifyjs-webpack-plugin": "~1.2.5",
72-
};
73-
74-
if (isAngular({packageJson})) {
75-
Object.assign(deps, {
76-
"@angular/compiler-cli": packageJson.dependencies["@angular/core"],
77-
"@ngtools/webpack": "~6.1.0-beta.1",
78-
"@angular-devkit/core": "~0.7.0-beta.1",
79-
"resolve-url-loader": "~2.3.0",
80-
});
81-
} else if (isTypeScript({packageJson})) {
82-
Object.assign(deps, { "awesome-typescript-loader": "~5.0.0" });
83-
}
84-
85-
if (isSass({packageJson})) {
86-
Object.assign(deps, { "sass-loader": "~7.0.1" });
87-
}
88-
89-
return deps;
85+
return isAngular({packageJson}) ?
86+
{
87+
"@angular-devkit/build-angular": "~0.7.0-rc.0",
88+
"@angular/compiler-cli": "~6.1.0-beta.1",
89+
} :
90+
{ };
9091
}
9192

9293
function showHelperMessages({ newDepsAdded, hasOldDeps }) {

Diff for: package.json

+17-2
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,25 @@
7474
"schema-utils": "0.4.3",
7575
"semver": "5.4.1",
7676
"shelljs": "0.6.0",
77-
"tapable": "1.0.0"
77+
"tapable": "1.0.0",
78+
"webpack": "~4.6.0",
79+
"webpack-cli": "~2.1.3",
80+
"webpack-bundle-analyzer": "~2.13.0",
81+
"webpack-sources": "~1.1.0",
82+
"clean-webpack-plugin": "~0.1.19",
83+
"copy-webpack-plugin": "~4.5.1",
84+
"raw-loader": "~0.5.1",
85+
"css-loader": "~0.28.11",
86+
"nativescript-worker-loader": "~0.9.0",
87+
"extract-text-webpack-plugin": "~3.0.2",
88+
"uglifyjs-webpack-plugin": "~1.2.5",
89+
"@angular-devkit/core": "^0.7.0-rc.0",
90+
"resolve-url-loader": "~2.3.0",
91+
"awesome-typescript-loader": "~5.0.0",
92+
"sass-loader": "~7.0.1"
7893
},
7994
"devDependencies": {
80-
"@angular-devkit/core": "^0.7.0-beta.1",
95+
"@angular-devkit/core": "^0.7.0-rc.0",
8196
"@types/node": "^8.0.0",
8297
"conventional-changelog-cli": "^1.3.22",
8398
"rxjs": "^6.2.0",

Diff for: projectHelpers.js

-14
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,6 @@ const isAngular = ({ projectDir, packageJson } = {}) => {
2828
.some(dependency => /^@angular\b/.test(dependency));
2929
};
3030

31-
const isSass = ({ projectDir, packageJson } = {}) => {
32-
packageJson = packageJson || getPackageJson(projectDir);
33-
const SASS_PLUGIN_NAME = "nativescript-dev-sass";
34-
35-
return (
36-
packageJson.dependencies &&
37-
packageJson.dependencies.hasOwnProperty(SASS_PLUGIN_NAME)
38-
) || (
39-
packageJson.devDependencies &&
40-
packageJson.devDependencies.hasOwnProperty(SASS_PLUGIN_NAME)
41-
);
42-
};
43-
4431
const getWebpackConfig = (projectDir, env, configPath = "webpack.config.js") => {
4532
const configAbsolutePath = resolve(projectDir, configPath);
4633
let config;
@@ -112,7 +99,6 @@ module.exports = {
11299
isAndroid,
113100
isIos,
114101
isAngular,
115-
isSass,
116102
isTypeScript,
117103
writePackageJson,
118104
};

0 commit comments

Comments
 (0)