Babel不会忽略node_modules目录,尽管它位于“ignore”配置中

时间:2017-03-23 15:16:01

标签: node.js compression babeljs minify babel

由于某种原因,babel不会忽略node_modules目录,尽管我在"ignore"文件的.babelrc字段中指定了它。为什么会这样?如何使babel按预期行事?

我的目标是在将应用程序推送到远程仓库然后再推送到服务器之前,压缩和修改ExpressJS应用程序中的所有.js文件(特别是我的所有后端代码)。我使用babelbabili

这是我的.babelrc配置:

{
    "presets": [
        ["latest", {
            "modules": false
        }]
    ],
    "env": {
        "development": {
            "presets": ["stage-0", "react", "babili"]
        },
        "production": {
            "presets": ["stage-0", "react", "babili"]
        }
    },
    "ignore": [
        "node_modules",
        "assets",
        "view",
        "public",
        "test",
        "spec",
        "logs",
        "lib/jasmine_examples",
        "db"
    ]
}

我从命令行运行babel,如下所示:

./node_modules/.bin/babel . -d ~/app_compressed/

babal开始压缩node_modules目录:

node_modules\apache-crypt\gensrc\index.js -> C:\Users\user\app_compressed\node_modules\apache-crypt\gensrc\index.js
node_modules\apache-md5\gensrc\index.js -> C:\Users\user\app_compressed\node_modules\apache-md5\gensrc\index.js
node_modules\babel-preset-env\data\built-in-features.js -> C:\Users\user\app_compressed\node_modules\babel-preset-env\data\built-in-features.js
node_modules\babel-preset-env\data\plugin-features.js -> C:\Users\user\app_compressed\node_modules\babel-preset-env\data\plugin-features.js
node_modules\babel-preset-env\lib\default-includes.js -> C:\Users\user\app_compressed\node_modules\babel-preset-env\lib\default-includes.js
node_modules\babel-preset-env\lib\index.js -> C:\Users\user\app_compressed\node_modules\babel-preset-env\lib\index.js

字面意思错误的行为。怎么解决?如何使babel忽略config中指定的文件夹?

3 个答案:

答案 0 :(得分:5)

忽略获取正则表达式数组,因此请尝试

ignore: [
 /node_modules/,
 ...,
]

或者您可以通过这样的回调函数

ignore: [
   /node_modukes/,
   function(filepath) {
      return filepath !== "/path/to/es6-file.js";
   },
]

答案 1 :(得分:4)

Babel开发团队说有一个错误,配置文件中的ingnored现在不起作用。

但是,我发现如果在命令行中传递被忽略的目录(使用--ignored选项),一切正常,正如预期的那样。您甚至可以在命令行中传递globs,例如**/drafts

./node_modules/.bin/babel . -d ~/app_compressed/ --ignore node_modules,test,assets,stuff,views,public,test,spec,logs,lib/jasmine_examples,db,routes/api/drafts,**/drafts

答案 2 :(得分:0)

Vue项目从Cloud9的环境移到我的PC并安装了npm依赖项后,我遇到了同样的问题。

通过以下方式解决此问题:

  1. 使用nvm for windows更新Node.js
  2. 全局安装Vue CLI,然后在build中运行Vue UI

我不确定有什么帮助。