GULP:没有定义gulp

Vik*_*sal 4 npm gulp

如下面的屏幕截图所示,我无法运行gulp以连接JavaScript文件.它的说法gulp is not defined.

我尝试了以下命令:

npm install -g gulp
npm install gulp
npm install gulp --save-dev
Run Code Online (Sandbox Code Playgroud)

我还设置了如下环境变量:

C:\Users\<user>\AppData\Roaming\npm;C:\Python27;C:\Users\<user>\AppData\Roaming\npm\node_modules;C:\Users\<user>\AppData\Roaming\npm\node_modules\gulp;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

var concat = require('gulp-concat');  
var rename = require('gulp-rename');  
var uglify = require('gulp-uglify');  


//script paths
var jsFiles = 'scripts/*.js',  
    jsDest = 'dist/scripts';

gulp.task('scripts', function() {  
    return gulp.src(jsFiles)
        .pipe(concat('scripts.js'))
        .pipe(gulp.dest(jsDest));
});
Run Code Online (Sandbox Code Playgroud)

Ale*_*lls 16

你只需要在gulp 本地安装和需要,你可能只在全局安装它

在命令行

cd <project-root> && npm install --save-dev gulp
Run Code Online (Sandbox Code Playgroud)

在你的gulpfile.js中

var gulp = require('gulp'); 
Run Code Online (Sandbox Code Playgroud)

这是与命令行依赖项(全局安装)不同的依赖项.更具体地说,它是相同的NPM包,但命令行程序通常会从NPM包中的不同入口点执行代码,然后返回需要('X')的内容.

如果我们转到Github上Gulp项目中的package.json文件,它将讲述整个故事:

{
  "name": "gulp",
  "description": "The streaming build system",
  "version": "3.9.1",
  "homepage": "http://gulpjs.com",
  "repository": "gulpjs/gulp",
  "author": "Fractal <contact@wearefractal.com> (http://wearefractal.com/)",
  "tags": [
    "build",
    "stream",
    "system",
    "make",
    "tool",
    "asset",
    "pipeline"
  ],
  "files": [
    "index.js",
    "lib",
    "bin",
    "completion",
    "gulp.1"
  ],
  "bin": {
    "gulp": "./bin/gulp.js"
  },
  "man": "gulp.1",
  "dependencies": {
    // ...
  },
  "devDependencies": {
     // ...
  },
  "scripts": {
    "prepublish": "marked-man --name gulp docs/CLI.md > gulp.1",
    "lint": "eslint . && jscs *.js bin/ lib/ test/",
    "pretest": "npm run lint",
    "test": "mocha --reporter spec",
    "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage"
  },
  "engines": {
    "node": ">= 0.9"
  },
  "license": "MIT"
}
Run Code Online (Sandbox Code Playgroud)

所以在命令行:

$ gulp default
Run Code Online (Sandbox Code Playgroud)

将执行此:

     "bin": {
        "gulp": "./bin/gulp.js"
      },
Run Code Online (Sandbox Code Playgroud)

另一方面,代码中的require('gulp')将返回以下值:

https://github.com/gulpjs/gulp/blob/master/index.js
Run Code Online (Sandbox Code Playgroud)

通常我们在package.json文件中看到这个:

"main": "index.js"
Run Code Online (Sandbox Code Playgroud)

但由于这是默认值,他们只是省略了它(这是愚蠢的IMO,最好是明确的,但它们不是我见过的第一个采用蹩脚的速记路线的项目.).