如何在我的项目中从npm切换到yarn?

29

我正在尝试在项目中从npm切换到yarn时遇到问题。我尝试下载yarn,但仍然使用npm启动我的项目。我需要切换,因为我正在开发的项目需要使用yarn来添加一个maven前端插件,以将后端和前端绑定在一起进行部署。

输入图像描述

1.
<frontend-maven-plugin.version>1.6</frontend-maven-plugin.version>
<node.version>v10.13.0</node.version>
<yarn.version>v1.12.1</yarn.version>

2.
<profiles>
    <profile>
        <id>demo</id>
        <build>
            <plugins>

                <plugin>
                    <groupId>com.github.eirslett</groupId>
                    <artifactId>frontend-maven-plugin</artifactId>
                    <version>${frontend-maven-plugin.version}</version>
                    <configuration>
                        <workingDirectory>src/js</workingDirectory>
                    </configuration>
                    <executions>
                        <execution>
                            <id>install node</id>
                            <goals>
                                <goal>install-node-and-yarn</goal>
                            </goals>
                            <configuration>
                                <nodeVersion>${node.version}</nodeVersion>
                                <yarnVersion>${yarn.version}</yarnVersion>
                            </configuration>
                        </execution>
                        <execution>
                            <id>yarn install</id>
                            <goals>
                                <goal>yarn</goal>
                            </goals>
                            <phase>generate-resources</phase>
                        </execution>
                        <execution>
                            <id>yarn test</id>
                            <goals>
                                <goal>yarn</goal>
                            </goals>
                            <phase>test</phase>
                            <configuration>
                                <arguments>test</arguments>
                                <environmentVariables>
                                    <CI>true</CI>
                                </environmentVariables>
                            </configuration>
                        </execution>
                        <execution>
                            <id>yarn build</id>
                            <goals>
                                <goal>yarn</goal>
                            </goals>
                            <phase>compile</phase>
                            <configuration>
                                <arguments>build</arguments>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>copy-resources</id>
                            <phase>process-classes</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${basedir}/target/classes/static</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>src/js/build</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

链接1 https://github.com/amigoscode/spring-boot-react-fullstack/blob/app-0/course-files/profiles.txt 链接2 https://github.com/eirslett/frontend-maven-plugin

3个回答

40

完整的简单的逐步回答:

  1. 安装yarn npm i -g yarn
  2. 进入您安装软件包的目录并运行yarn命令
  3. Yarn将初始化并创建其yarn.lock文件,现在删除package-lock.json*注意
  4. 在您的package.json文件中,在"scripts"中替换所有npm命令为yarn** 注意
  5. 运行yarn dev或任何您用于运行yarn脚本的命令=> 完成

* 注意:很重要的一点是,在运行yarn命令之前不要删除它(正如有些人建议的那样),否则可能会出现问题,例如您的yarn命令甚至无法工作,而且还会抛出错误:

Error: ENOENT: no such file or directory, open './package-lock.json'

** 注意:如果您使用了

 "preinstall": "npx npm-force-resolutions",

你可以将其删除,yarn默认情况下会自动采用"resolutions"而无需强制使用 :)


1
在第三步中,我说“你可以删除package-lock.json”,但实际上你必须删除它,因为它可能与yarn.lock冲突。我之前在Netlify上遇到过这个问题 - 如果项目文件夹中同时存在这两个文件,它将无法构建/部署。 - Sebastian Voráč

21

很简单,按照以下步骤操作:

  1. 确认你的机器全局上已经安装了Yarn,否则使用npm install -g yarn进行安装。
  2. 进入你的根项目目录,在CLI中输入yarnYarn可以使用与npm相同的package.json格式,并且能够从npm注册表中安装任何包。

如需更多详细信息,请查看官方yarn文档


2
在这种情况下,我可以删除 package-lock.json 文件吗? - Kishore S
当然可以。Yarn锁文件将会自动生成。 - Momo Setti
3
从Yarn 1.7版本开始,您也可以使用 yarn import 命令,它将尝试复制 package-lock.json 文件中找到的相同依赖项。 - OzzyTheGiant

5
只要您的计算机安装了Yarn,就无需进行任何操作即可从npm切换到Yarn。此外,要使用Yarn安装包,应该运行yarn命令,而不是等同于npm install的yarn install命令。因为Yarn本身不是一个独立的库,它只是一个新的CLI客户端,可以从npm注册表中获取模块。有关注册表本身的任何内容都不会更改-您仍然可以像往常一样获取和发布包。
要了解有关Yarn的更多信息,请阅读此文

1
错误,您不能同时使用yarn和npm。当服务器同时看到package-json.lockyarn.lock时,有些甚至会崩溃构建(我曾在Netlify上经历过这种情况)。我建议按照我的逐步回答来操作。 - Sebastian Voráč

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接