管理不同环境的纱线安装的最佳实践
Best practices for managing yarn install for different environments
我在 MacOS 和 Linux 上对我的点文件使用相同的 package.json
。直到最近其中一个软件包停止在 Linux 上安装时,这才成为问题。 (失败的原因是软件包需要安装 Alfred
,一个 MacOS 应用程序)。当在我的 Linux 环境中找不到它时,安装失败。
处理这种事情的最佳方法是什么?我应该有两个不同的 package.json
文件吗?一种用于通用的东西,一种用于 Mac 特定的软件包?
作为参考,我目前得到的依赖是:
"devDependencies": {
"acorn": "^7.1.0"
},
"dependencies": {
"alfred-fkill": "^0.4.1",
"bash-language-server": "^1.6.1",
"eslint": "^6.6.0",
"fkill-cli": "^5.2.0",
"jsonlint": "^1.6.3",
"prettier": "^1.19.1"
}
我在Linux下得到的错误是:
$ yarn upgrade
yarn upgrade v1.19.0
[1/4] Resolving packages...
warning alfred-fkill > fkill > taskkill > execa > cross-spawn-async@2.2.5: cross-spawn no longer requires a build toolchain, use it instead
warning bash-language-server > turndown > jsdom > left-pad@1.3.0: use String.prototype.padStart()
warning jsonlint > nomnom@1.8.1: Package no longer supported. Contact support@npmjs.com for more info.
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Rebuilding all packages...
error /home/oalders/dot-files/node_modules/alfred-fkill: Command failed.
Exit code: 1
Command: alfy-init
Arguments:
Directory: /home/oalders/dot-files/node_modules/alfred-fkill
Output:
{ Error: Command failed: alfred-link
Error: Alfred preferences not found at location /home/oalders/Library/Application Support/Alfred/prefs.json
at module.exports (/home/oalders/dot-files/node_modules/resolve-alfred-prefs/index.js:44:9)
at makeError (/home/oalders/dot-files/node_modules/alfy/node_modules/execa/index.js:174:9)
at Promise.all.then.arr (/home/oalders/dot-files/node_modules/alfy/node_modules/execa/index.js:278:16)
at process._tickCallback (internal/process/next_tick.js:68:7)
code: 1,
stdout: '',
stderr:
'Error: Alfred preferences not found at location /home/oalders/Library/Application Support/Alfred/prefs.json\n at module.exports (/home/oalders/dot-files/node_modules/resolve-alfred-prefs/index.js:4
4:9)\n',
failed: true,
signal: null,
cmd: 'alfred-link',
timedOut: false,
killed: false }
info Visit https://yarnpkg.com/en/docs/cli/upgrade for documentation about this command.
我的解决方案是我决定滥用 devDependencies
。我已将 alfred-fkill
(仅 MacOS 节点模块)声明为开发依赖项。然后在Linux我运行yarn install --production=true
。这将忽略开发人员部门,我不再有安装失败的情况。在我的 Mac 上,我将 运行 yarn install
并且它会像以前一样安装所有内容。这行得通,但很奇怪。
我还剩下:
"devDependencies": {
"alfred-fkill": "^0.4.1"
},
"dependencies": {
"acorn": "^7.1.0",
"bash-language-server": "^1.6.1",
"eslint": "^6.6.0",
"fkill-cli": "^5.2.0",
"jsonlint": "^1.6.3",
"prettier": "^1.19.1"
}
我在 MacOS 和 Linux 上对我的点文件使用相同的 package.json
。直到最近其中一个软件包停止在 Linux 上安装时,这才成为问题。 (失败的原因是软件包需要安装 Alfred
,一个 MacOS 应用程序)。当在我的 Linux 环境中找不到它时,安装失败。
处理这种事情的最佳方法是什么?我应该有两个不同的 package.json
文件吗?一种用于通用的东西,一种用于 Mac 特定的软件包?
作为参考,我目前得到的依赖是:
"devDependencies": {
"acorn": "^7.1.0"
},
"dependencies": {
"alfred-fkill": "^0.4.1",
"bash-language-server": "^1.6.1",
"eslint": "^6.6.0",
"fkill-cli": "^5.2.0",
"jsonlint": "^1.6.3",
"prettier": "^1.19.1"
}
我在Linux下得到的错误是:
$ yarn upgrade
yarn upgrade v1.19.0
[1/4] Resolving packages...
warning alfred-fkill > fkill > taskkill > execa > cross-spawn-async@2.2.5: cross-spawn no longer requires a build toolchain, use it instead
warning bash-language-server > turndown > jsdom > left-pad@1.3.0: use String.prototype.padStart()
warning jsonlint > nomnom@1.8.1: Package no longer supported. Contact support@npmjs.com for more info.
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Rebuilding all packages...
error /home/oalders/dot-files/node_modules/alfred-fkill: Command failed.
Exit code: 1
Command: alfy-init
Arguments:
Directory: /home/oalders/dot-files/node_modules/alfred-fkill
Output:
{ Error: Command failed: alfred-link
Error: Alfred preferences not found at location /home/oalders/Library/Application Support/Alfred/prefs.json
at module.exports (/home/oalders/dot-files/node_modules/resolve-alfred-prefs/index.js:44:9)
at makeError (/home/oalders/dot-files/node_modules/alfy/node_modules/execa/index.js:174:9)
at Promise.all.then.arr (/home/oalders/dot-files/node_modules/alfy/node_modules/execa/index.js:278:16)
at process._tickCallback (internal/process/next_tick.js:68:7)
code: 1,
stdout: '',
stderr:
'Error: Alfred preferences not found at location /home/oalders/Library/Application Support/Alfred/prefs.json\n at module.exports (/home/oalders/dot-files/node_modules/resolve-alfred-prefs/index.js:4
4:9)\n',
failed: true,
signal: null,
cmd: 'alfred-link',
timedOut: false,
killed: false }
info Visit https://yarnpkg.com/en/docs/cli/upgrade for documentation about this command.
我的解决方案是我决定滥用 devDependencies
。我已将 alfred-fkill
(仅 MacOS 节点模块)声明为开发依赖项。然后在Linux我运行yarn install --production=true
。这将忽略开发人员部门,我不再有安装失败的情况。在我的 Mac 上,我将 运行 yarn install
并且它会像以前一样安装所有内容。这行得通,但很奇怪。
我还剩下:
"devDependencies": {
"alfred-fkill": "^0.4.1"
},
"dependencies": {
"acorn": "^7.1.0",
"bash-language-server": "^1.6.1",
"eslint": "^6.6.0",
"fkill-cli": "^5.2.0",
"jsonlint": "^1.6.3",
"prettier": "^1.19.1"
}