build: rely on engines to prevent using npm for dependency install (#41477)
Rather than relying on a preinstall script, set `engine-strict` to `true` in a project `.npmrc` file, relying on the `engines` having `npm` set to note that yarn should be used instead. --- Output from `npm install` changes from: ``` $ npm install > angular-srcs@12.0.0-next.7 preinstall /usr/local/account/js/angular > node tools/yarn/check-yarn.js /usr/local/account/js/angular/tools/yarn/check-yarn.js:12 throw new Error( ^ Error: Please use Yarn instead of NPM to install dependencies. See: https://yarnpkg.com/lang/en/docs/install/ at Object.<anonymous> (/usr/local/account/js/angular/tools/yarn/check-yarn.js:12:9) at Module._compile (internal/modules/cjs/loader.js:778:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! angular-srcs@12.0.0-next.7 preinstall: `node tools/yarn/check-yarn.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the angular-srcs@12.0.0-next.7 preinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /usr/local/account/.npm/_logs/2021-04-06T22_54_02_292Z-debug.log ``` to ``` $ npm install npm ERR! code ENOTSUP npm ERR! notsup Unsupported engine for angular-srcs@12.0.0-next.7: wanted: {"node":">=10.19.0 <13.0.0","yarn":">=1.22.4 <2","npm":"Plesae use yarn instead of NPM to install dependencies"} (current: {"node":"10.20.1","npm":"6.14.4"}) npm ERR! notsup Not compatible with your version of node/npm: angular-srcs@12.0.0-next.7 npm ERR! notsup Not compatible with your version of node/npm: angular-srcs@12.0.0-next.7 npm ERR! notsup Required: {"node":">=10.19.0 <13.0.0","yarn":">=1.22.4 <2","npm":"Plesae use yarn instead of NPM to install dependencies"} npm ERR! notsup Actual: {"npm":"6.14.4","node":"10.20.1"} npm ERR! A complete log of this run can be found in: npm ERR! /usr/local/account/.npm/_logs/2021-04-06T22_53_23_912Z-debug.log ``` PR Close #41477
This commit is contained in:
parent
ec27bd4ed1
commit
c385e74454
|
@ -0,0 +1 @@
|
||||||
|
engine-strict = true
|
|
@ -6,7 +6,6 @@
|
||||||
"author": "Angular",
|
"author": "Angular",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"preinstall": "node ../tools/yarn/check-yarn.js",
|
|
||||||
"postinstall": "node tools/cli-patches/patch.js",
|
"postinstall": "node tools/cli-patches/patch.js",
|
||||||
"aio-use-local": "node tools/ng-packages-installer overwrite . --debug --force --build-packages",
|
"aio-use-local": "node tools/ng-packages-installer overwrite . --debug --force --build-packages",
|
||||||
"aio-use-npm": "node tools/ng-packages-installer restore .",
|
"aio-use-npm": "node tools/ng-packages-installer restore .",
|
||||||
|
@ -86,7 +85,8 @@
|
||||||
"//engines-comment": "Keep this in sync with /package.json and /aio/tools/examples/shared/package.json",
|
"//engines-comment": "Keep this in sync with /package.json and /aio/tools/examples/shared/package.json",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.19.0 <16.0.0",
|
"node": ">=10.19.0 <16.0.0",
|
||||||
"yarn": ">=1.22.4 <2"
|
"yarn": ">=1.22.4 <2",
|
||||||
|
"npm": "Please use yarn instead of NPM to install dependencies"
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
engine-strict = true
|
|
@ -7,14 +7,15 @@
|
||||||
"http-server": "http-server",
|
"http-server": "http-server",
|
||||||
"protractor": "protractor",
|
"protractor": "protractor",
|
||||||
"webdriver:update": "node ../../../../scripts/webdriver-manager-update.js",
|
"webdriver:update": "node ../../../../scripts/webdriver-manager-update.js",
|
||||||
"preinstall": "node ../../../../tools/yarn/check-yarn.js",
|
|
||||||
"postinstall": "yarn webdriver:update",
|
"postinstall": "yarn webdriver:update",
|
||||||
"sync-deps": "node sync-boilerplate-dependencies"
|
"sync-deps": "node sync-boilerplate-dependencies"
|
||||||
},
|
},
|
||||||
"//engines-comment": "Keep this in sync with /package.json and /aio/package.json",
|
"//engines-comment": "Keep this in sync with /package.json and /aio/package.json",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.19.0 <16.0.0",
|
"node": ">=10.19.0 <16.0.0",
|
||||||
"yarn": ">=1.21.1 <2"
|
"yarn": ">=1.21.1 <2",
|
||||||
|
"npm": "Please use yarn instead of NPM to install dependencies"
|
||||||
|
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
|
|
|
@ -9,7 +9,8 @@
|
||||||
"//engines-comment": "Keep this in sync with /aio/package.json and /aio/tools/examples/shared/package.json",
|
"//engines-comment": "Keep this in sync with /aio/package.json and /aio/tools/examples/shared/package.json",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.19.0 <16.0.0",
|
"node": ">=10.19.0 <16.0.0",
|
||||||
"yarn": ">=1.22.4 <2"
|
"yarn": ">=1.22.4 <2",
|
||||||
|
"npm": "Please use yarn instead of NPM to install dependencies"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -31,7 +32,6 @@
|
||||||
"// 2": "Find the usage you are looking for with:",
|
"// 2": "Find the usage you are looking for with:",
|
||||||
"// 3": "yarn ng-dev --help",
|
"// 3": "yarn ng-dev --help",
|
||||||
"/ ": "",
|
"/ ": "",
|
||||||
"preinstall": "node tools/yarn/check-yarn.js",
|
|
||||||
"postinstall": "node scripts/webdriver-manager-update.js && node --preserve-symlinks --preserve-symlinks-main ./tools/postinstall-patches.js",
|
"postinstall": "node scripts/webdriver-manager-update.js && node --preserve-symlinks --preserve-symlinks-main ./tools/postinstall-patches.js",
|
||||||
"prepare": "husky install",
|
"prepare": "husky install",
|
||||||
"test-ivy-aot": "bazelisk test --config=ivy --build_tag_filters=-no-ivy-aot,-fixme-ivy-aot --test_tag_filters=-no-ivy-aot,-fixme-ivy-aot",
|
"test-ivy-aot": "bazelisk test --config=ivy --build_tag_filters=-no-ivy-aot,-fixme-ivy-aot --test_tag_filters=-no-ivy-aot,-fixme-ivy-aot",
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
/**
|
|
||||||
* @license
|
|
||||||
* Copyright Google LLC All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Use of this source code is governed by an MIT-style license that can be
|
|
||||||
* found in the LICENSE file at https://angular.io/license
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
if (process.env.npm_execpath.indexOf('yarn') === -1) {
|
|
||||||
throw new Error(
|
|
||||||
'Please use Yarn instead of NPM to install dependencies. See: https://yarnpkg.com/lang/en/docs/install/');
|
|
||||||
}
|
|
Loading…
Reference in New Issue