在项目的根目录中,我试图从可通过网络(网络或内部网络)访问的远程Gruntfile.js加载Grunt任务以及文件的所有内容。

我已经尝试了几件事(请参见下文),首先将Gruntfile.js托管在本地Apache服务器上进行测试。

使用--gruntfile选项

> /project/path> grunt --gruntfile=http://localhost/Gruntfile.js build
Reading "Gruntfile.js" Gruntfile...ERROR
Fatal error: Unable to find "/project/path/http://localhost/Gruntfile.js" Gruntfile.


使用--base选项

> /project/path> grunt --base=http://localhost/Gruntfile.js build
    process.chdir(grunt.option('base') || path.dirname(gruntfile));
Error: ENOENT, no such file or directory


在我的项目的根目录下创建一个Gruntfile.js,其中仅包含以下代码:

module.exports = function (grunt) {

  grunt.loadTasks( 'http://localhost/Gruntfile.js' );

};


结果是:

> /project/path> grunt build
>> Tasks directory "http://localhost/Gruntfile.js" not found.
Warning: Task "build" not found. Use --force to continue.

Aborted due to warnings.


再次尝试使用Gruntfile.js

module.exports = function (grunt) {

  require( 'http://localhost/Gruntfile.js' )( grunt );

};


给我这个:

> /project/path> grunt build
Loading "Gruntfile.js" tasks...ERROR
>> Error: Cannot find module 'http://localhost/Gruntfile.js'
Warning: Task "build" not found. Use --force to continue.

Aborted due to warnings.




编辑:似乎没有办法从不在磁盘上的grunt文件加载任务。我将找到另一个解决方案。

最佳答案

我遇到了同样的问题,这是我的解决方案。我希望它能对当前/未来的人有所帮助:


创建一个npm软件包来托管Gruntfile.js并将其上传到存储库(我目前正在使用Bitbucket)这是我的package.json的样子:

{ "name": "my-remote-gruntfile-package", "private": true, "version": "0.0.1"}
在您当前项目的package.json中配置它,并使用npm install安装它或直接运行

npm install git+ssh://[email protected]:user/my-remote-gruntfile-package.git#0.0.1
创建一个bash脚本(或等效于Windows bash)来解决更改Gruntfile.js位置并设置当前基本路径的问题。这是为了避免在每次执行时传递--gruntfile和--base参数(此步骤不是强制性的)

#!/bin/bashgrunt --base ./ --gruntfile ./node_modules/my-remote-gruntfile-package/GruntFile.js $1


注意:注意在Gruntfile.js上使用的相对路径

关于javascript - 从远程Gruntfile.js加载grunt任务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34740649/

10-11 13:34