如何使用本地安装的Gulp.js v4与`yarn --no-bin-links`?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用本地安装的Gulp.js v4与`yarn --no-bin-links`?相关的知识,希望对你有一定的参考价值。
我把Gulp.js v4
到项目的依赖项中,然后运行 yarn install --no-bin-links
安装到本地。
$ yarn install --no-bin-links
yarn install v1.17.3
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.12: The platform "linux" is incompatible with this module.
info "fsevents@1.2.12" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 32.48s.
(我使用的是 --no-bin-links
参数来避免这个错误。error An unexpected error occurred: "EPROTO: protocol error, symlink '../../../semver/bin/semver' -> '/path/to/project/public/components/accord/node_modules/.bin/semver'"
.)
的 package.json
定义了正确的版本范围。
{
...
"dependencies": {
"bootstrap": "^3.3.6",
"gulp": "^4.0.2",
"gulp-autoprefixer": "*",
"gulp-cli": "^2.2.0",
"gulp-filter": ">=6.0.0",
"gulp-less": "*",
"gulp-plumber": "*",
"gulp-rename": "*",
"gulp-watch": "*",
"html5shiv": ">=3.7.3",
"jquery": "^3.4.0",
"jquery-ui": "^1.12.1",
"jquery-ui-dist": "^1.12.1",
"path": "*",
"respond": ">=0.9.0"
},
...
}
该 yarn.lock
也是指正确的版本。
...
gulp@^4.0.2:
version "4.0.2"
...
gulp-cli@>=2.2.0, gulp-cli@^2.2.0:
version "2.2.0"
...
还有... yarn list
提供了预期的输出。
$ yarn list | grep "gulp"
├─ gulp-autoprefixer@7.0.1
├─ gulp-cli@2.2.0
│ ├─ gulplog@^1.0.0
├─ gulp-filter@6.0.0
├─ gulp-less@4.0.1
├─ gulp-plumber@1.2.1
├─ gulp-rename@2.0.0
├─ gulp-watch@5.0.1
├─ gulp@4.0.2
│ ├─ gulp-cli@^2.2.0
├─ gulplog@1.0.0
但当我现在执行 gulp
,旧版本(Gulp 3.9.1
和Gulp CLI 1.2.1
被使用。
$ ./public/components/gulp/bin/gulp.js -v
[15:42:30] CLI version 1.2.1
[15:42:30] Local version 3.9.1
这里出了什么问题,如何在本地正确安装所需的Gulp版本与Yarn。和 使这个版本被使用?
除非你的 PATH
已定制,运行 gulp
将总是引用全局版本(如果已安装)。
您需要引用本地安装的版本。如果您正常安装(没有 --no-bin-links
)你可以使用这些技术中的任何一种。
创建一个 纱线脚本 诸如
"foo": "gulp --version"
. 这将引用本地版本的gulp。使用
yarn gulp
使用
$(yarn bin)/gulp
使用 --no-bin-links
你 可以 直接引用二进制文件,只是比较困难,因为它还没有被链接到它的标准位置。
首先,你需要找到与之相关的二进制文件的元数据。gulp
(其实。gulp-cli
),你可以用 纱线信息: yarn info gulp-cli bin
. 然后,你需要执行那个二进制。
node ./node_modules/gulp-cli/bin/gulp.js --version
这样做的问题是,如果gulp的内部组织发生变化,就不安全了,所以把二进制链接起来是一个更好的方法。
你可以通过用子进程生成命令来使它变得更安全一些,但你仍然要依赖于结构的 node_modules
.
以上是关于如何使用本地安装的Gulp.js v4与`yarn --no-bin-links`?的主要内容,如果未能解决你的问题,请参考以下文章