2016-04-23 75 views
3

这也是我的项目,它使用了gulp-sass。 gulp-sass取决于node-sass#^ 3.4.1,它只是自动更新为3.5.3,这是一个破解版本。node sass release 3.5.3破解版本

我已经通过更新 package.json文件降级了我的gulp sass版本到旧版本(2.1.0),但它仍然中断。

如何回到节点sass 3.4.2?

错误消息

错误:您可以不从@media内@extend外选择器。 您只能在相同的指令中使用@extend选择器。

{ 
    "version": "1.0.0", 
    "name": "abcd", 
    "devDependencies": { 
    "bower": "^1.3.12", 
    "express": "^4.12.3", 
    "gulp": "^3.8.10", 
    "gulp-autoprefixer": "^2.1.0", 
    "gulp-bower": "^0.0.7", 
    "gulp-concat": "^2.5.2", 
    "gulp-install": "^0.4.0", 
    "gulp-livereload": "^3.8.0", 
    "gulp-minify-css": "^1.0.0", 
    "gulp-plumber": "^1.0.0", 
    "gulp-sass": "2.1.0", 
    "gulp-sourcemaps": "^1.5.1", 
    "gulp-uglify": "^1.1.0" 
    }, 
    "dependencies": { 
    "jquery": "1.11.1" 
    } 
} 
+1

它是如何打破的?什么是错误? – randominstanceOfLivingThing

+0

我更新了它不支持@extend内部媒体查询的帖子。 –

+0

这与Gulp有什么关系? Extend不应该在媒体查询中工作。 – cimmanon

回答

6

看起来像一个new version was just released that allows the "buggy" version of node-sass但你总是可以npm shrinkwrap特定子依赖于特定的版本,如果你需要 - 假设初级包装是与依赖版本兼容。

这将锁定node-sass版本gulp-sass 3.4.2:

{ 
    "name": "yourprojectname", 
    "version": "1.0.0", 
    "dependencies": { 
    "gulp-sass": { 
     "version": "2.3.1", 
     "from": "[email protected]>=2.3.1 <3.0.0", 
     "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-2.3.1.tgz", 
     "dependencies": { 
     "node-sass": { 
      "version": "3.4.2" 
     } 
     } 
    } 
    } 
} 

确保您删除node_modulesnpm cache clean再次运行npm install之前清除您的本地缓存的包。

+0

steveax,所以在过去3天中面临此问题,我认为它的工作原理。但是,你能帮我在上面提到的我的包json中适应这种依赖关系 –

+1

@SudiptoSarkar,上面的JSON代码块不会进入'package.json',而是进入'npm-shrinkwrap.json'(在同一级别作为你的'package.json')。 – steveax

+0

感谢steveax,它像一个魅力一样工作,你知道它与我的npm缓存中的任何内容无关,我甚至不必运行npm cache clean! –