Javascript Grunt监视JS或CSS没有运行任务
我不知道为什么grunt watch没有运行JS或CSS配置 我的Grunt文件位于“工具”文件夹中。项目文件夹结构如下所示:Javascript Grunt监视JS或CSS没有运行任务,javascript,node.js,gruntjs,Javascript,Node.js,Gruntjs,我不知道为什么grunt watch没有运行JS或CSS配置 我的Grunt文件位于“工具”文件夹中。项目文件夹结构如下所示: -index.html -js -css -tools --package.json --node modules --gruntfile.js BASE_PATH: '', JS_SOURCE_PATH: 'js/src/', JS_BUILD_PATH: 'js/build/', CSS_SOURCE_PATH:
-index.html
-js
-css
-tools
--package.json
--node modules
--gruntfile.js
BASE_PATH: '',
JS_SOURCE_PATH: 'js/src/',
JS_BUILD_PATH: 'js/build/',
CSS_SOURCE_PATH: 'css/src/',
CSS_BUILD_PATH: 'css/build/',
以下是我的CSS文件夹结构:
-css
--src
---styles.css
---third-party
----bootstrap.css
-js
--src
---app.js
---third-party
----jquery.js
以下是我的JS文件夹结构:
-css
--src
---styles.css
---third-party
----bootstrap.css
-js
--src
---app.js
---third-party
----jquery.js
这是我的package.json
{
"name": "my-project-name",
"version": "0.1.0",
"devDependencies": {
"grunt": "~0.4.5",
"grunt-contrib-cssmin": "^0.10.0",
"grunt-contrib-jshint": "~0.10.0",
"grunt-contrib-uglify": "~0.5.0",
"grunt-contrib-watch": "^0.6.1",
"matchdep": "^0.3.0"
}
}
这是我的gruntfile,这是一个似乎不起作用的监视任务:
module.exports = function(grunt){
//Loads the necessary tasks for this Grunt file.
require('matchdep').filterDev('grunt-contrib-*').forEach(grunt.loadNpmTasks);
// Project configuration
grunt.initConfig({
// Load package.json file so that access is given to the project name and version number.
pkg: grunt.file.readJSON('package.json'),
// Constants for the Gruntfile so we can easily change the path for our environments.
//note: end with /
BASE_PATH: '../',
JS_SOURCE_PATH: '../js/src/',
JS_BUILD_PATH: '../js/build/',
CSS_SOURCE_PATH: '../css/src/',
CSS_BUILD_PATH: '../css/build/',
uglify: {
files: {
expand: true,
cwd: '<%= JS_SOURCE_PATH %>',
src: '**/*.js',
dest: '<%= JS_BUILD_PATH %>',
flatten: false,
}
},
jshint: {
options: {
jshintrc: '<%= JS_SOURCE_PATH %>.jshintrc',
force: true
},
all: [
'<%= JS_SOURCE_PATH %>**/*.js',
'!<%= JS_SOURCE_PATH %>third-party/**/*.js'
]
},
cssmin: {
options: {
keepBreaks: true,
report: 'gzip'
},
minify: {
expand: true,
cwd: '<%= CSS_SOURCE_PATH %>',
src: '**/*.css',
dest: '<%= CSS_BUILD_PATH %>'
}
},
watch: {
options: {
livereload: true,
nospawn: true
},
js: {
files: ['<%= JS_SOURCE_PATH %>**/*.js'],
tasks: ['jshint']
},
css: {
files: ['<%= CSS_SOURCE_PATH %>**/*.css'],
tasks: ['cssmin']
},
html: {
files: ['<%= BASE_PATH %>*.html']
}
}
});
grunt.registerTask('default', ['jshint', 'uglify', 'cssmin']);
grunt.registerTask('doit', ['uglify', 'cssmin']);
grunt.registerTask('css', ['cssmin']);
grunt.registerTask('hint', ['jshint']);
};
我认为问题在于Gruntile的路径和位置 你有这个:
BASE_PATH: '../',
JS_SOURCE_PATH: '../js/src/',
JS_BUILD_PATH: '../js/build/',
CSS_SOURCE_PATH: '../css/src/',
CSS_BUILD_PATH: '../css/build/',
GrunFile似乎不在根目录中,而是在文件夹中
GrunFile(和package.json、node_模块)需要位于项目的根目录中才能正常工作
如果要更改其pat,可以设置两个参数--base
和--grunfile
尝试将GrunFile移动到项目的根目录中,并按如下方式更改路径:
-index.html
-js
-css
-tools
--package.json
--node modules
--gruntfile.js
BASE_PATH: '',
JS_SOURCE_PATH: 'js/src/',
JS_BUILD_PATH: 'js/build/',
CSS_SOURCE_PATH: 'css/src/',
CSS_BUILD_PATH: 'css/build/',
从控制台启动后:
grunt watch
“不工作”是什么意思?一些错误?没有编译?@AlessandroMinoccheri它没有运行任务。例如,当我保存“app.js”时,jshint任务不会运行。对不起,我没说清楚。你的gruntfile在哪里?在哪个文件夹中?@MarioAraque我更新了问题。我的grunt文件与package.json一起位于名为“tools”的文件夹中。您是否尝试键入“grunt watch”?因为您没有任何与watch插件相关的注册任务。Grunfile位于正确的位置。我认为这不是问题所在。当我单独运行所有任务时,它们都能工作。比如“grunt css”和“grunt hint”。只有监视任务不起作用,我认为在保存“监视”文件时应该运行这些任务。+1对于Mdd,GrunFile(在他的情况下)位于正确的位置。尝试从GrunFile中删除选项以测试其是否起作用@MddI确实删除了选项,但它不起作用。我注意到一件事,当我运行grunt watch并保存我的'index.html'文件时,页面会刷新。只是CSS文件和JS文件在保存时没有运行其任务,也没有刷新浏览器。这可能是一个错误,因为您没有任何与“html”监视任务相关的任务。