I am trying to use sass with grunt. I have installed ruby, sass and grunt in my path.
The versions are,
node: 0.10.20
npm: 1.3.11
grunt-cli: 0.1.13
grunt: 0.4.5
sass: 3.4.4
my package json is,
"private": true,
"devDependencies": {
"express": "4.x",
"grunt": "~0.4.1",
"grunt-contrib-sass": "~0.3.0",
"grunt-contrib-watch": "~0.4.4"
}
my grunt file is,
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
dist: {
files: {
'style/style.css' : 'sass/home.scss'
}
}
},
watch: {
css: {
files: '**/*.scss',
tasks: ['sass']
}
}
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default',['watch']);
}
Now if i tried "grunt" command, i am getting the below error. Any help?
run: grunt or grunt watch or grunt sass
error:
Running "sass:dist" (sass) task
Error: Error generating source map: couldn't determine public URL for the source
stylesheet.
No filename is available so there's nothing for the source map to link
to.
on line of standard input
Use --trace for backtrace.
Warning: Error: Error generating source map: couldn't determine public URL for t
he source stylesheet.
No filename is available so there's nothing for the source map to link
to.
on line of standard input
Use --trace for backtrace. Use --force to continue.
Aborted due to warnings.
any idea?
Looks like you don't have compass installed. You can run gem install compass. In your original example you had your grunt file set up to use compass which would have given you access to compass mixins and features.
Your code looks fine now and should work but seems to not be finding your files. I'll GI e it a go as well when I'm next to a computer.
In the meantime you can try the sourcemap: none option on the sass task.
Update:
Works perfectly fine for me. Could you run tree -I node_modules and post the output(unless you think there's any sensitive info) just to double check the files are in the right place?
I expect it to look something like this
.
├── Gruntfile.js
├── package.json
├── sass
│ └── style.scss
└── style
├── style.css
└── style.css.map
Second update:
Your packages seem significantly older than what's in my fresh setup. Either try starting from scratch or do the following:
Install npm-check-updates
npm install npm-check-updates
And then run the following
npm-check-updates will tell you which packages are outdated
npm-check-updates -u will update those packages in your package.json
npm update to update all your outdated packages.
updating node modules helped..
npm-check-updates will tell you which packages are outdated
npm-check-updates -u will update those packages in your package.json
npm update to update all your outdated packages.
Related
How can I solve this warning when creating laravel project?
1 WARNING in child compilations (Use 'stats.children: true' resp. '--stats-children' for more details)
Steps to replicate:
composer create-project --prefer-dist laravel/laravel example
cd example
composer require laravel/ui
php artisan ui vue --auth
npm install vue#next vue-router#next vue-loader#next
npm install
npm run dev
EDIT
From this solution, add these lines to webpack.mix.js
mix.webpackConfig({
stats: {
children: true,
},
});
The above solution creates another warning:
WARNING in ./resources/sass/app.scss (./node_modules/css-loader/dist/cjs.js??clonedRuleSet-6.use1!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-6.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-6.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-6.use[4]!./resources/sass/app.scss)
Module Warning (from ./node_modules/postcss-loader/dist/cjs.js):
Warning
(2423:3) autoprefixer: Replace color-adjust to print-color-adjust. The color-adjust shorthand is currently deprecated.
Child mini-css-extract-plugin C:\xampp\htdocs\lva\node_modules\css-loader\dist\cjs.js??clonedRuleSet-6.use1!C:\xampp\htdocs\lva\node_modules\postcss-loader\dist\cjs.js??clonedRuleSet-6.use[2]!C:\xampp\htdocs\lva\node_modules\resolve-url-loader\index.js??clonedRuleSet-6.use[3]!C:\xampp\htdocs\lva\node_modules\sass-loader\dist\cjs.js??clonedRuleSet-6.use[4]!C:\xampp\htdocs\lva\resources\sass\app.scss compiled with 1 warning
webpack compiled with 1 warning
How can I solve this?
The color-adjust shorthand is currently deprecated and it depends on the autoprefixer#10.4.6 (source).
I was able to fix this by reverting the autoprefixer package as well as #Benno to version 10.4.5. Run this:
npm install autoprefixer#10.4.5 --save-exact
You probably updated your npm packages. I was able to fix this by reverting the autoprefixer package to version 10.4.5 in the package-lock.json.
when you have problem with autoprefixer maybe because your version autoprefixer. you can add version autoprefixer based problem this version autoprefixer . i have problem on "print-color-adjust" and i add code on my package.json for change my autoprefixer become version "10.4.5"
when you use npm
"overrides": {
"autoprefixer": "10.4.5"
},
Or, when you use yarn
"resolutions": {
"autoprefixer": "10.4.5"
},
Don't forget to delete your package-lock and node_modules , then npm install again.
it work for me (react-bootstrap.v.5)
If you don't want to add additional packages to solve this error, then try this:
Capitalize all the files and Directory name in your components folder
Or you can run this command to install a package if the above solution doesn't work.
npm install autoprefixer#10.4.5 --save-exact
I'm using React with InertiaJS and Laravel as backend, this solution worked in my case.
Thanks
I have the same problem, whenever I hit save an annoying pop-up of error code comes. The simple solution is to add the following code to your webpack.mixjs file :
mix.webpackConfig({
stats: {
children: true,
},});
stop the npm run watch
add a package autoprefixer, add below in terminal:
npm install autoprefixer#10.4.5 --save-exact
run npm run watch and it will not give the error again.
I solved this issue within Laravel by changing the file ./node_modules/bootstrap/scss/forms/_form-check.scss
Line 28 part of the .form-check-input style
change color-adjust: exact; // Keep themed appearance for print
to print-color-adjust: exact; // Keep themed appearance for print
I am building a Next JS application. To admit, this is my first exposure to Next JS. Now, I am having a problem using SCSS with my Next JS application. I have created a file called, assets/auth.scss. Then I imported it into pages/_app.js as follow.
import '../assets/auth.scss';
When I run "npm run dev", I am getting the following error.
./node_modules/next/dist/compiled/css-loader/cjs.js??ruleSet[1].rules[2].oneOf[7].use[1]!./node_modules/next/dist/compiled/postcss-loader/cjs.js??ruleSet[1].rules[2].oneOf[7].use[2]!./node_modules/nex
t/dist/compiled/resolve-url-loader/index.js??ruleSet[1].rules[2].oneOf[7].use[3]!./node_modules/next/dist/compiled/sass-loader/cjs.js??ruleSet[1].rules[2].oneOf[7].use[4]!./assets/auth.scss
Error: Node Sass version 6.0.1 is incompatible with ^4.0.0 || ^5.0.0.
Error: Cannot find module 'C:\Users\Acer\Desktop\shar-kya-mal-next-js\nextjs-blog\.next\build-manifest.json'
Require stack:
Then I tried installing node-sass package too. It still does not work. How can I fix it?
Do you use npm install sass or node sass? Every next project where i will use scss i use npm install sass and it works normally. Do you do something different?
Try to use npm install sass or yarn install sass
I am trying to add scss to my grunt file so i ran the following command:
npm install grunt-contrib-sass sass --save-dev.
Then i added the following to my Gruntfile.js
grunt.loadNpmTasks('grunt-contrib-sass'); and
grunt.initConfig({
...
sass: {
dev: {
files: {
'<%=meta.src %>assets/css/all2.css': '<%=meta.src %>assets/scss/build.scss'
}
},
dist: {
files: {
'<%=meta.dist %>/assets/css/all.min.css': '<%=meta.src %>/assets/scss/build.scss'
}
}
},
When i run this i get the output of the build.scss in the console and it creates a empty file?
What am i missing????
Running "sass:dev" (sass) task
#flupdidup {
font-weight: bold;
}
Running "sass:dist" (sass) task
#flupdidup {
font-weight: bold;
}
Done, without errors.
Process terminated with code 0.
a minimal recreation of the issue can be found here: https://github.com/Peter-Optiway/grunt-sass-issue
Switching to grunt-sass was always an option, but your issue was not because of that. The issue was because you had sass install using npm.
npm install -g sass
When you look at that
$ sass --help
Compile Sass to CSS.
Usage: dart-sass <input>
-s, --style Output style.
[expanded (default)]
-c, --[no-]color Whether to emit terminal colors.
--[no-]trace Print full Dart stack traces for exceptions.
-h, --help Print this usage information.
--version Print the version of Dart Sass.
It has no output parameter. While grunt-contrib-sass expects the sass to be install from the ruby gem.
$ sudo gem install sass
Now sass will have different options
$ sass --help
Usage: sass [options] [INPUT] [OUTPUT]
Description:
Converts SCSS or Sass files to CSS.
...
And now the build works fine
$ cat ./dist/assets/css/all.min.css
main #flupdidup {
font-weight: bold;
background: #eeffcc; }
/*# sourceMappingURL=all.min.css.map */
I managed to fix the issue by changing to the grunt-sass package instead.
npm install --save-dev load-grunt-tasks load-grunt-tasks
Then i added the following to my Gruntfile.js require('load-grunt-tasks')(grunt); and it just worked.
I am trying browserify and I have the following files in my project directory
node_models/.bin - where browserify is located
sample.js
module.exports = 'Hello, world';
index.js
window.alert(require('./sample'));
Can somebody help me how to run it using browserify? I'm using Windows.
All you should need to do is run this command in the project directory:
node_modules\.bin\browserify index.js > bundle.js
However, you can make things a little more convinient by adding an entry under scripts in your package.json:
{
...
"scripts": {
"bundle": "browserify index.js > bundle.js"
}
}
You can then build the bundle with this command:
npm run bundle
I used node.js to install karma. My first try failed when running the following command on Terminal:
npm install -g karma
That failed so I decided to use:
sudo npm install -g karma
After entering my password it seemed to install correctly.
I am pasting part of the output of the install, maybe it will mean something to someone and it will be relevant to my question. After all the npm http messages this is what I see:
> ws#0.4.27 install /usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/bufferutil.node
SOLINK_MODULE(target) Release/bufferutil.node: Finished
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/validation.node
SOLINK_MODULE(target) Release/validation.node: Finished
/usr/local/share/npm/bin/karma -> /usr/local/share/npm/lib/node_modules/karma/bin/karma
karma#0.8.6 /usr/local/share/npm/lib/node_modules/karma
├── pause#0.0.1
├── dateformat#1.0.2-1.2.3
├── xmlbuilder#0.4.2
├── colors#0.6.0-1
├── chokidar#0.6.2
├── growly#1.1.1
├── mime#1.2.9
├── q#0.9.6
├── rimraf#2.1.4 (graceful-fs#1.2.3)
├── coffee-script#1.6.3
├── minimatch#0.2.12 (sigmund#1.0.0, lru-cache#2.3.0)
├── optimist#0.3.5 (wordwrap#0.0.2)
├── glob#3.1.21 (inherits#1.0.0, graceful-fs#1.2.3)
├── LiveScript#1.0.1 (prelude-ls#1.0.1)
├── log4js#0.6.6 (dequeue#1.0.3, semver#1.1.4, async#0.1.15, readable-stream#1.0.2)
├── lodash#1.1.1
├── http-proxy#0.10.3 (pkginfo#0.2.3, utile#0.1.7)
├── istanbul#0.1.22 (abbrev#1.0.4, which#1.0.5, fileset#0.1.5, nopt#2.0.0, wordwrap#0.0.2, async#0.1.22, mkdirp#0.3.5, esprima#0.9.9, escodegen#0.0.24, handlebars#1.0.12)
└── socket.io#0.9.16 (base64id#0.1.0, policyfile#0.0.4, redis#0.7.3, socket.io-client#0.9.16)
Then when I try to run the following command to create a karma config file with this command:
karma init karma.config.js
this is the message that gets returned:
-bash: karma: command not found
I have tried the same command with sudo before it but I get the same result.
Does anyone have any idea as to what is going on?
Any help is appreciated.
*Update!
I decided to check a file named: builderror.log
located in: /usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
This is what it shows:
gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/eperez/.node-gyp/0.10.5"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.node-gyp"
gyp http GET http://nodejs.org/dist/v0.10.5/node-v0.10.5.tar.gz
gyp http 200 http://nodejs.org/dist/v0.10.5/node-v0.10.5.tar.gz
#mayankcpdixit gave the answer up there in a response to the OP's original question, but I'll put it here again in case anyone misses it.
You do not need to uninstall everything, and if I had to manually add a new path link for every npm package I try to install I'd probably shoot myself.
npm install -g karma-cli
Boom. Now you have karma command lines installed. Just like Grunt.
Edit: Please don't forget to upvote #mayankcpdixit as well, he commented directly on the original post, but didn't actually "answer" the question.
In your ~/.bash_profile (or similar) amend your PATH to include npm-installed binaries:
export PATH="$PATH:/usr/local/share/npm/bin"
I had this very same issue, and found this solution to be less time-consuming and impactful than completely re-installing node.
EDIT this has also worked for others in bash_profile
export PATH="$PATH:/usr/local/lib/node_modules/karma/bin"
It is recommended to install karma with its Command-Line-Interface (karma-cli) which will take care of fetching the appropriate karma. You can also install a different local version specific to each project you're working on and karma-cli will pick the appropriate one.
From the karma installation page:
Typing ./node_modules/karma/bin/karma start sucks so you might find it useful to install karma-cli globally:
npm install -g karma-cli
Now, check that karma was installed by typing:
karma start
You can also check that karma was installed by going to this directory:
cd /usr/local/lib/node_modules/karma
Good luck!
Don't need to completely uninstall node.js
Just
sudo rm -rf /usr/local/lib/node_modules/npm/
Then
install node.js
Then
reinstall karma
This worked for me.
I had to add export PATH="$PATH":/usr/local/lib/node_modules/npm/node_modules/karma/bin after installing karma with sudo npm install karma.
hope this helps.
Just go to test.sh:
Find: $BASE_DIR/../node_modules/karma/bin/karma start $BASE_DIR/../config/karma.conf.js $*
Replace with: /usr/local/bin/karma start $BASE_DIR/../config/karma.conf.js $*
Or: karma start $BASE_DIR/../config/karma.conf.js $*
I was also facing the same issue. It looks like karma for command line is a separate package which can be installed by
npm install -g karma-cli
When upgrading from Karma 0.10 to 0.12 the link to the karma executable is removed.
You can get it back with
cd node_modules/.bin
ln -s ../karma/bin/karma karma
Try re-installing node.js. There are lots of ways to install it, but I recommend downloading from nodejs.org
If that doesn't work, you may try to re-install karma.