home > webfront > ECMAS > nodejs >

sass安装:webpack sass编译失败,node-sass安装失败的终极解决方

author:zhoulujun    hits:

sass难言之隐-sass安装的坑,现在终于有了避过的方法,小小吐槽一下,然后分享闭坑方法:sass js与sassjs-loader救民众于水火

sass难言之隐-sass安装的坑

之前花了很多时间折腾node-sass,发现sass老是安装不上

从sass刚刚开始出来开始,就遇到ruby安装sass失败问题。换淘宝gem库

gem sources --remove https://rubygems.org/

gem sources -a https://ruby.taobao.org/

gem install sass

后面又死node-sass 安装失败一系列问题

nodejs npm安装本地node-sass失败,ruby gem 安装sass失败总结

总是在想,sass 为什么不用出一个纯nodejs编译器。

最先接触的是less,可以直接引用js版编译,在网页直接运营,也有phpless,less在php中直接编译,也可以在jsp中编译。

sass用到现在,发现公司的网络限制一个比一个狠。导致很难安装。

依赖太多(ruby或者python2。你们是如何解决的——比如如何争取权限

当然,stylu也是替代方案,但是想sass,如果时间充裕,我都想弄哦编译sass的js的轮子。

sass.js与sassjs-loader救民众于水火

https://www.npmjs.com/package/sass.js

https://www.npmjs.com/package/sassjs-loader

npm i sass.js sassjs-loader

对于webpack ,在package移除node-sass 与 sass-loader

webpack.config 里面,对 module.rules 中sass-loader ,替换为sassjs-loader

{
  test: /\.scss$/,
  use: [{
    loader: "style-loader" // 将 JS 字符串生成为 style 节点
  }, {
    loader: "css-loader" // 将 CSS 转化成 CommonJS 模块
  }, {
    loader: "sassjs-loader" // 将 Sass 编译成 CSS
  }]
},

模板工程:

https://github.com/zhoulujun/webpack4-vue2-project-template

https://github.com/zhoulujun/wepack4-react-project-template

如果是vue-cli 创建的工程

因为vue3.0后,vue-cli  把webpack 封装了n层,没有经历去取研究

同理在工程目录:npm i sass.js sassjs-loader  vue-cli-service-sassjs

同时移除 @vue/cli-service

不是sass 是sass.js

或者把 @vue/cli-service 替换为我修改后的地址

"devDependencies": {

    "@vue/cli-plugin-babel": "^3.8.0",

    "@vue/cli-plugin-eslint": "^3.8.0",

    "@vue/cli-service": "^3.8.0",

    "babel-eslint": "^10.0.1",

    "eslint": "^5.16.0",

    "eslint-plugin-vue": "^5.0.0",

    "vue-template-compiler": "^2.6.10"

  },

替换为:

"devDependencies": {

    "@vue/cli-plugin-babel": "^3.8.0",

    "@vue/cli-plugin-eslint": "^3.8.0",

    "@vue/cli-service": "git+https://github.com/zhoulujun/vue-cli-service-sassjs",

    "babel-eslint": "^10.0.1",

    "eslint": "^5.16.0",

    "eslint-plugin-vue": "^5.0.0",

    "vue-template-compiler": "^2.6.10"

  },


但是还是有一个坑:非:https://www.npmjs.com/package/sass

原来安装的是sass 而非sass.js

Browserslist: caniuse-lite is outdated. Please run next command `npm update caniuse-lite browserslist`

internal/modules/cjs/loader.js:638

    throw err;

    ^

Error: Cannot find module 'sass.js'

    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)

    at Function.Module._load (internal/modules/cjs/loader.js:562:25)

    at Module.require (internal/modules/cjs/loader.js:690:17)

    at require (internal/modules/cjs/helpers.js:25:18)

    at Object.

    at Module._compile (internal/modules/cjs/loader.js:776:30)

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)

    at Module.load (internal/modules/cjs/loader.js:653:32)

    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)

    at Function.Module._load (internal/modules/cjs/loader.js:585:3)

Browserslist: caniuse-lite is outdated. Please run next command `npm update caniuse-lite browserslist`

感谢知乎 duduluu 的评论

sass-loader配合dart-sass只要简单地添加一个选项就行了。sass.js和sassjs-loader都是是非官方的,用的人少,要担风险。

{
loader: 'sass-loader',
options: {
implementation: require('sass'),
},
}

这个,确实没有去仔细看文档!原来如此简单啊。

转载本站文章《sass安装:webpack sass编译失败,node-sass安装失败的终极解决方》, 请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/nodejs/8143.html