ember.js 不使用符号链接的npm安装选项无法工作

qkf9rpyu  于 2022-11-05  发布在  其他
关注(0)|答案(3)|浏览(171)

我用Windows 8和Ubuntu作为虚拟机建立了一个开发环境,为此我使用了VirtualBox。
我还设法在VirtualBox中创建了一个共享文件夹。
在这个共享文件夹中,我尝试用约曼的ember生成器启动一个项目。

yo ember --skip-install --karma
npm install --no-bin-links

对于安装模块NPM我使用选项“--no-bin-links”不创建符号链接。不幸的是,我仍然有错误创建符号链接...是什么我使用虽然这个选项?他有一个错误?

dluptydi

dluptydi1#

NPM docs关于参数“--no-bin-links”说:
将阻止npm为软件包可能包含的任何二进制文件创建符号链接。
这只会导致NPM无法在node_modules/.bin文件夹中创建链接。我还搜索了一种方法来防止NPM在使用npm install ../myPackage时创建符号链接,但没有找到任何解决方案...

**更新:**npm支持团队表示这将重现旧行为(无符号链接):

npm install $(npm pack <folder> | tail -1)

在Windows 10上的git-bash中对我有效。

jyztefdp

jyztefdp2#

  • 当试图解决安装本地模块(即npm install ../myPackage)和不需要符号链接的问题时,在Google搜索结果中出现了这个Stack Overflow页面。因此,我在下面添加这个答案,以帮助其他最终出现在这里的人。*

解决方案#1 -用于开发环境。

使用NPM支持团队提出的解决方案(如其他答案中所述)...


# Reproduces the old behavior of hard copies and not symlinks

npm install $(npm pack <folder> | tail -1)

这在开发环境中对于手动安装是很好的。

解决方案#2 -用于构建环境。

然而,在我们的例子中,开发环境并没有那么重要,因为当我们将更改提交到Git时,./node_modules/文件夹会被忽略。
文件./package.json./package-lock.json是重要的,并被带入我们的构建环境。
在我们的构建环境中(我们的自动化CI/CD管道的一部分),自动化只运行npm install命令,并根据package.json文件中列出的依赖项进行构建。
因此,这就是问题影响我们的地方。package.json依赖项列表中的本地引用文件导致出现符号链接。现在,我们回到老问题。这些符号链接随后被带入构建的输出,这些输出将移动到舞台和生产环境中。
我们所做的是在归档模式下使用rsync,并使用--copy-links选项将符号链接转换为原始链接的副本。
下面是该命令在自动构建中的外观:


# Install dependencies based on ./package.json

npm install

# Make a copy that changes symlinks to hard copies

rsync --archive --verbose --copy-links ./node_modules/ ./node_modules_cp/

# Remove and replace

rm -r ./node_modules/
mv ./node_modules_cp/ ./node_modules/
9w11ddsr

9w11ddsr3#

我有一个类似的环境。显然Virtualbox(vagrant)同步在重命名或移动文件时出现问题,这在更新模块时发生。
如果您在命令行中列出了一个文件列表(ls -alhp),并查看了???中的文件权限,那么就应该重新启动您的virtualbox。这将把权限设置为有效值。然后在安装模块时使用--no-bin-links选项。

相关问题