在项目的根目录中,我试图从可通过网络(网络或内部网络)访问的远程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/