Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何自动化javascript开发,而不是每次都创建新的项目结构_Javascript_Npm_Vim_Eslint_Prettier - Fatal编程技术网

如何自动化javascript开发,而不是每次都创建新的项目结构

如何自动化javascript开发,而不是每次都创建新的项目结构,javascript,npm,vim,eslint,prettier,Javascript,Npm,Vim,Eslint,Prettier,我想避免为所有项目创建项目结构的麻烦,这样我就可以使用linting和fixed。我(在最后)采用了一种方法,但我很确定有一种更优雅的解决方案。总之,一般来说,步骤如下: 创造 使用npm安装所有软件包 用于: 创造 安装插件并创建规则 集成插件(等) 对每个新项目重复此步骤 对于npm安装,我知道-g可以全局安装,但如果我将.eslintrc.json放在我的主文件夹中,当我在VIM中打开它时,它会说它无法加载插件(airbnb、prettier等)样式指南。大概是因为我的项目文件夹中

我想避免为所有项目创建项目结构的麻烦,这样我就可以使用linting和fixed。我(在最后)采用了一种方法,但我很确定有一种更优雅的解决方案。总之,一般来说,步骤如下:

  • 创造
  • 使用npm安装所有软件包
  • 用于:
    • 创造
    • 安装插件并创建规则
    • 集成插件(等)
    • 对每个新项目重复此步骤
对于npm安装,我知道
-g
可以全局安装,但如果我将
.eslintrc.json
放在我的主文件夹中,当我在VIM中打开它时,它会说它无法加载插件(airbnb、prettier等)样式指南。大概是因为我的项目文件夹中没有node_modules文件夹

因此,我决定创建一个模板文件夹,其中包含上述序列中的所有内容。并将该结构复制到一个文件夹中,在该文件夹中,我将从VIM以
autocmd
的形式打开我的
.html
.css
.js
.json
文件

这是我的
.vimrc

autocmd FileType javascript,json,css,html silent exec '! '.$HOME.'/Documents/eslint-template/prepare.sh
下面是
prepare.sh

$ cat Documents/eslint-template/prepare.sh 
#!/bin/bash

echo Preparing environment...
templateFolder=$HOME/Documents/eslint-template
files=( $templateFolder/{.,}* )
for file in ${files[@]}; do
  [ "$(basename $0)" == "$(basename $file)" ] && continue
  destFile=$PWD/$(basename $file)
  diff -q $file $destFile > /dev/null 2>&1 ||
    cp -r $file $PWD/
done

rsync -azz --delete $templateFolder/node_modules/ node_modules/ > /dev/null 2>&1

echo Preparation completed!
我一直在调整和测试,它工作得很好(不过我会运行更多测试)。但是打开一个简单的
.html
文件可能需要10到15秒,因为它必须将整个结构从模板复制到新项目中。在VIM中运行时,即使是来自的
-zz
选项似乎也比直接从终端运行慢得多


所以,问题是,还有什么其他方法可以做到这一点呢?

您可以使用类似的方法。您可以将项目结构放入
templates
文件夹中。请避免将
node\u模块
放在那里,因为我们始终可以安装
package.json中列出的依赖项。您可以使用类似的方法。您可以将项目结构放入
templates
文件夹中。请避免将
node_modules
放在那里,因为我们总是可以安装
package.json

中列出的依赖项,但避免每次下载一堆包正是我想要避免的事情。存储node_modules文件夹是一种不好的做法。对于更大的项目,大小可以达到千兆字节。另外,MacOS中的node_模块文件夹可能在其他平台上运行不好。但无论如何,我会在项目级别使用node_模块文件夹,不是吗?你的意思是我不需要存储两次模块(一个用于项目,另一个用于模板),对吗?但如果我有10个项目,我会将其存储10次,而不是10+1(模板),这开始失去意义,不是吗?在我看来,节省空间的理想方法是使用全局节点模块,但我不能,正如我所发布的。至于平台,为什么我要尝试使用从一个系统到另一个系统的模块?我在同一台机器里问。不是每个项目的node_模块都是一样的。在一个项目中,您将需要与在另一个项目中不需要的相同的包。此外,有时您需要在一个项目中支持旧版本,在另一个项目中支持新版本。仅使用一个全局包很难做到这一点。但避免每次下载一堆包正是我想要避免的事情。存储node_modules文件夹是一种不好的做法。对于更大的项目,大小可以达到千兆字节。另外,MacOS中的node_模块文件夹可能在其他平台上运行不好。但无论如何,我会在项目级别使用node_模块文件夹,不是吗?你的意思是我不需要存储两次模块(一个用于项目,另一个用于模板),对吗?但如果我有10个项目,我会将其存储10次,而不是10+1(模板),这开始失去意义,不是吗?在我看来,节省空间的理想方法是使用全局节点模块,但我不能,正如我所发布的。至于平台,为什么我要尝试使用从一个系统到另一个系统的模块?我在同一台机器里问。不是每个项目的node_模块都是一样的。在一个项目中,您将需要与在另一个项目中不需要的相同的包。此外,有时您需要在一个项目中支持旧版本,在另一个项目中支持新版本。只有一个全球方案很难做到这一点。